Developer Blog

Tipps und Tricks für Entwickler und IT-Interessierte

BeautifulSoup | Complete Cheatsheet with Examples

Installation

pip install beautifulsoup4
from bs4 import BeautifulSoup

Creating a BeautifulSoup Object

Parse HTML string:

html = "<p>Example paragraph</p>"
soup = BeautifulSoup(html, 'html.parser')

Parse from file:

with open("index.html") as file:
  soup = BeautifulSoup(file, 'html.parser')

BeautifulSoup Object Types

When parsing documents and navigating the parse trees, you will encounter the following main object types:

Tag

A Tag corresponds to an HTML or XML tag in the original document:

soup = BeautifulSoup('<p>Hello World</p>')
p_tag = soup.p

p_tag.name # 'p'
p_tag.string # 'Hello World'

Tags contain nested Tags and NavigableStrings.

NavigableString

A NavigableString represents text content without tags:

soup = BeautifulSoup('Hello World')
text = soup.string

text # 'Hello World'
type(text) # bs4.element.NavigableString

BeautifulSoup

The BeautifulSoup object represents the parsed document as a whole. It is the root of the tree:

soup = BeautifulSoup('<html>...</html>')

soup.name # '[document]'
soup.head # <head> Tag element

Comment

Comments in HTML are also available as Comment objects:

<!-- This is a comment -->

Copy

comment = soup.find(text=re.compile('This is'))
type(comment) # bs4.element.Comment

Knowing these core object types helps when analyzing, searching, and navigating parsed documents.

Searching the Parse Tree

By Name

HTML:

<div>
  <p>Paragraph 1</p>
  <p>Paragraph 2</p>
</div>

Python:

paragraphs = soup.find_all('p')
# <p>Paragraph 1</p>, <p>Paragraph 2</p>

By Attributes

HTML:

<div id="content">
  <p>Paragraph 1</p>
</div>

Python:Copy

div = soup.find(id="content")
# <div id="content">...</div>

By Text

HTML:

<p>This is some text</p>

Python:

p = soup.find(text="This is some text")
# <p>This is some text</p>

Searching with CSS Selectors

CSS selectors provide a very powerful way to search for elements within a parsed document.

Some examples of CSS selector syntax:

By Tag Name

Select all

tags:

soup.select("p")

By ID

Select element with ID “main”:

soup.select("#main")

By Class Name

Select elements with class “article”:

soup.select(".article")

By Attribute

Select tags with a “data-category” attribute:

soup.select("[data-category]")

Descendant Combinator

Select paragraphs inside divs:

soup.select("div p")

Child Combinator

Select direct children paragraphs:

soup.select("div > p")

Adjacent Sibling

Select h2 after h1:

soup.select("h1 + h2")

General Sibling

Select h2 after any h1:

soup.select("h1 ~ h2")

By Text

Select elements containing text:

soup.select(":contains('Some text')")

By Attribute Value

Select input with type submit:

soup.select("input[type='submit']")

Pseudo-classes

Select first paragraph:

soup.select("p:first-of-type")

Chaining

Select first article paragraph:

soup.select("article > p:nth-of-type(1)")

Accessing Data

HTML:

<p class="content">Some text</p>

Python:

p = soup.find('p')
p.name # "p"
p.attrs # {"class": "content"}
p.string # "Some text"

The Power of find_all()

The find_all() method is one of the most useful and versatile searching methods in BeautifulSoup.

Returns All Matches

find_all() will find and return a list of all matching elements:

all_paras = soup.find_all('p')

This gives you all paragraphs on a page.

Flexible Queries

You can pass a wide range of queries to find_all():Name – find_all(‘p’)Attributes – find_all(‘a’, class_=’external’)Text – find_all(text=re.compile(‘summary’))Limit – find_all(‘p’, limit=2)And more!

Useful Features

Some useful things you can do with find_all():Get a count – len(soup.find_all(‘p’))Iterate through results – for p in soup.find_all(‘p’):Convert to text – [p.get_text() for p in soup.find_all(‘p’)]Extract attributes – [a[‘href’] for a in soup.find_all(‘a’)]

Why It’s Useful

In summary, find_all() is useful because:It returns all matching elementsIt supports diverse and powerful queriesIt enables easily extracting and processing result data

Whenever you need to get a collection of elements from a parsed document, find_all() will likely be your go-to tool.

Navigating Trees

Traverse up and sideways through related elements.

Modifying the Parse Tree

BeautifulSoup provides several methods for editing and modifying the parsed document tree.

HTML:

<p>Original text</p>

Python:

p = soup.find('p')
p.string = "New text"

Edit Tag Names

Change an existing tag name:

tag = soup.find('span')
tag.name = 'div'

Edit Attributes

Add, modify or delete attributes of a tag:

tag['class'] = 'header' # set attribute
tag['id'] = 'main'

del tag['class'] # delete attribute

Edit Text

Change text of a tag:

tag.string = "New text"

Append text to a tag:

tag.append("Additional text")

Insert Tags

Insert a new tag:

new_tag = soup.new_tag("h1")
tag.insert_before(new_tag)

Delete Tags

Remove a tag entirely:

tag.extract()

Wrap/Unwrap Tags

Wrap another tag around:

tag.wrap(soup.new_tag('div))

Unwrap its contents:

tag.unwrap()

Modifying the parse tree is very useful for cleaning up scraped data or extracting the parts you need.

Outputting HTML

Input HTML:

<p>Hello World</p>

Python:

print(soup.prettify())

# <p>
#  Hello World
# </p>

Integrating with Requests

Fetch a page:

import requests

res = requests.get("<https://example.com>")
soup = BeautifulSoup(res.text, 'html.parser')

Parsing Only Parts of a Document

When dealing with large documents, you may want to parse only a fragment rather than the whole thing. BeautifulSoup allows for this using SoupStrainers.

There are a few ways to parse only parts of a document:

By CSS Selector

Parse just a selection matching a CSS selector:

from bs4 import SoupStrainer

only_tables = SoupStrainer("table")
soup = BeautifulSoup(doc, parse_only=only_tables)

This will parse only the tags from the document.

By Tag Name

Parse only specific tags:

only_divs = SoupStrainer("div")
soup = BeautifulSoup(doc, parse_only=only_divs)

By Function

Pass a function to test if a tag should be parsed:

def is_short_string(string):
  return len(string) < 20

only_short_strings = SoupStrainer(string=is_short_string)
soup = BeautifulSoup(doc, parse_only=only_short_strings)

This parses tags based on their text content.

By Attributes

Parse tags that contain specific attributes:

has_data_attr = SoupStrainer(attrs={"data-category": True})
soup = BeautifulSoup(doc, parse_only=has_data_attr)

Multiple Conditions

You can combine multiple strainers:

strainer = SoupStrainer("div", id="main")
soup = BeautifulSoup(doc, parse_only=strainer)

This will parse only

.

Parsing only parts you need can help reduce memory usage and improve performance when scraping large documents.

Dealing with Encoding

When parsing documents, you may encounter encoding issues. Here are some ways to handle encoding:

Specify at Parse Time

Pass the from_encoding parameter when creating the BeautifulSoup object:

soup = BeautifulSoup(doc, from_encoding='utf-8')

This handles any decoding needed when initially parsing the document.

Encode Tag Contents

You can encode the contents of a tag:

tag.string.encode("utf-8")

Use this when outputting tag strings.

Encode Entire Document

To encode the entire BeautifulSoup document:

soup.encode("utf-8")

This returns a byte string with the encoded document.

Pretty Print with Encoding

Specify encoding when pretty printing

print(soup.prettify(encoder="utf-8"))

Unicode Dammit

BeautifulSoup’s UnicodeDammit class can detect and convert incoming documents to Unicode:

from bs4 import UnicodeDammit

dammit = UnicodeDammit(doc)
soup = dammit.unicode_markup

This converts even poorly encoded documents to Unicode.

Properly handling encoding ensures your scraped data is decoded and output correctly when using BeautifulSoup.

Django | Debugging Django-App in VS Code

See here how to configure VS Code:

  • Switch to Run view in VS Code (using the left-side activity bar or F5). You may see the message “To customize Run and Debug create a launch.json file”. This means that you don’t yet have a launch.json file containing debug configurations. VS Code can create that for you if you click on the create a launch.json file link:Django tutorial: initial view of the debug panel
  • Select the link and VS Code will prompt for a debug configuration. Select Django from the dropdown and VS Code will populate a new launch.json file with a Django run configuration. The launch.json file contains a number of debugging configurations, each of which is a separate JSON object within the configuration array.
  • Scroll down to and examine the configuration with the name “Python: Django”:
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: Django",
      "type": "python",
      "request": "launch",
      "program": "${workspaceFolder} manage.py",
      "args": ["runserver"],
      "django": true,
      "justMyCode": true
    }
  ]
}
  • This configuration tells VS Code to run "${workspaceFolder}/manage.py" using the selected Python interpreter and the arguments in the args list. Launching the VS Code debugger with this configuration, then, is the same as running python manage.py runserver in the VS Code Terminal with your activated virtual environment. (You can add a port number like "5000" to args if desired.) The "django": true entry also tells VS Code to enable debugging of Django page templates, which you see later in this tutorial.
  • Test the configuration by selecting the Run > Start Debugging menu command, or selecting the green Start Debugging arrow next to the list (F5):Django tutorial: start debugging/continue arrow on the debug toolbar
  • Ctrl+click the http://127.0.0.1:8000/ URL in the terminal output window to open the browser and see that the app is running properly.
  • Close the browser and stop the debugger when you’re finished. To stop the debugger, use the Stop toolbar button (the red square) or the Run > Stop Debugging command (Shift+F5).
  • You can now use the Run > Start Debugging at any time to test the app, which also has the benefit of automatically saving all modified files.

Haskell | Getting Started

Readings

Haskell

Glasgow Haskell Compiler

Tutorials

Applications

Games

Installation

  • Install GHCup: Windows Binary is here GHCup is the main installer for the general purpose language Haskell.

Or install manuell

  • Download and Install Haskell here
choco install haskell-dev
refreshenv

Installation on Windows and Powershell

Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true

First Steps

In order to run ghc and cabal, you need to adjust your PATH variable.

To do so, you may want to run 'source /d/CLOUD/Programmier-Workshops/Kurse/Haskell/Programme/Haskell/ghcup/env' in your current terminal
session as well as your shell configuration (e.g. ~/.bashrc).
Start a simple repl via:
  ghci

Start a new haskell project in the current directory via:
  cabal init --interactive

Install other GHC versions and tools via:
  ghcup list
  ghcup install <tool> <version>

To install system libraries and update msys2/mingw64,
open the "Mingw haskell shell"
and the "Mingw package management docs"
desktop shortcuts.

If you are new to Haskell, check out https://www.haskell.org/ghcup/steps/

Configuration

Cabal configuration file is by default located at

&lt;$ENV:USERPROFILE>\AppData\Roaming\cabal\config

Create your first project

Create a haskell project

cabal init
cabal build
cabal run

Configure VS Code with Haskell Support

Install required components

$ cabal install hlint

Configure VSCode

$ stack new vscode-haskell-config
$ cd vscode-haskell-config
$ stack setup

Install an additional source code formatter

$ stack install brittany

F# – Snippets

Mathematics

Sum of Squares

dotnet new --install Fable.Template

Create an new App

dotnet new fable

Prepare environment

dotnet tool restore

Fix NodeJS SSL Error

$ENV:NODE_OPTIONS="--openssl-legacy-provider"

Install dependencies and run app

npm install
npm start

F# – Working with Fable

Get started

Install Fable with

dotnet new --install Fable.Template

Create an new App

dotnet new fable

Prepare environment

dotnet tool restore

Fix NodeJS SSL Error

$ENV:NODE_OPTIONS="--openssl-legacy-provider"

Install dependencies and run app

npm install
npm start
Laravel Toolbox

Laravel | Vergleich Inertia und Livewire Starter-kit

Vergleich der Dateien

TypeFileFolder
FilesKernel.phplaravel-starter-jetstream-inertia/app/Http
Filespackages.phplaravel-starter-jetstream-inertia/bootstrap/cache
Filesservices.phplaravel-starter-jetstream-inertia/bootstrap/cache
Filescomposer.jsonlaravel-starter-jetstream-inertia
Filesjetstream.phplaravel-starter-jetstream-inertia/config
Filespackage.jsonlaravel-starter-jetstream-inertia
Filesapp.csslaravel-starter-jetstream-inertia/public/css/app.css
Filesapp.jslaravel-starter-jetstream-inertia/public/js
Filesapp.jslaravel-starter-jetstream-inertia/resources/js
Filesweb.phplaravel-starter-jetstream-inertia/routes
Filestailwind.config.jslaravel-starter-jetstream-inertia
FilesApiTokenPermissionsTest.phplaravel-starter-jetstream-inertia/tests/Feature
FilesBrowserSessionsTest.phplaravel-starter-jetstream-inertia/tests/Feature
FilesCreateApiTokenTest.phplaravel-starter-jetstream-inertia/tests/Feature
FilesCreateTeamTest.phplaravel-starter-jetstream-inertia/tests/Feature
FilesDeleteAccountTest.phplaravel-starter-jetstream-inertia/tests/Feature
FilesDeleteApiTokenTest.phplaravel-starter-jetstream-inertia/tests/Feature
FilesDeleteTeamTest.phplaravel-starter-jetstream-inertia/tests/Feature
FilesInviteTeamMemberTest.phplaravel-starter-jetstream-inertia/tests/Feature
FilesLeaveTeamTest.phplaravel-starter-jetstream-inertia/tests/Feature
FilesProfileInformationTest.phplaravel-starter-jetstream-inertia/tests/Feature
FilesRemoveTeamMemberTest.phplaravel-starter-jetstream-inertia/tests/Feature
FilesTwoFactorAuthenticationSettingsTest.phplaravel-starter-jetstream-inertia/tests/Feature
FilesUpdatePasswordTest.phplaravel-starter-jetstream-inertia/tests/Feature
FilesUpdateTeamMemberRoleTest.phplaravel-starter-jetstream-inertia/tests/Feature
FilesUpdateTeamNameTest.phplaravel-starter-jetstream-inertia/tests/Feature
Filesautoload.phplaravel-starter-jetstream-inertia/vendor
Filesautoload_classmap.phplaravel-starter-jetstream-inertia/vendor/composer
Filesautoload_files.phplaravel-starter-jetstream-inertia/vendor/composer
Filesautoload_psr4.phplaravel-starter-jetstream-inertia/vendor/composer
Filesautoload_real.phplaravel-starter-jetstream-inertia/vendor/composer
Filesautoload_static.phplaravel-starter-jetstream-inertia/vendor/composer
Filesinstalled.jsonlaravel-starter-jetstream-inertia/vendor/composer
Filesinstalled.phplaravel-starter-jetstream-inertia/vendor/composer
Fileswebpack.mix.jslaravel-starter-jetstream-inertia
Only incomposer.locklaravel-starter-jetstream-inertia
Only inwebpack.config.jslaravel-starter-jetstream-inertia
Only inHandleInertiaRequests.phplaravel-starter-jetstream-inertia/app/Http/Middleware
Only in2022_01_16_142014_create_sessions_table.phplaravel-starter-jetstream-inertia/database/migrations
Only inJetstreamlaravel-starter-jetstream-inertia/resources/js
Only inLayoutslaravel-starter-jetstream-inertia/resources/js
Only inPageslaravel-starter-jetstream-inertia/resources/js
Only inapp.blade.phplaravel-starter-jetstream-inertia/resources/views
Only inlaravel.loglaravel-starter-jetstream-inertia/storage/logs
Only ininertiajslaravel-starter-jetstream-inertia/vendor
Only intightencolaravel-starter-jetstream-inertia/vendor
Only inViewlaravel-starter-jetstream-livewire/app
Only in2022_01_16_142135_create_sessions_table.phplaravel-starter-jetstream-livewire/database/migrations
Only inapilaravel-starter-jetstream-livewire/resources/views
Only inauthlaravel-starter-jetstream-livewire/resources/views
Only indashboard.blade.phplaravel-starter-jetstream-livewire/resources/views
Only inlayoutslaravel-starter-jetstream-livewire/resources/views
Only innavigation-menu.blade.phplaravel-starter-jetstream-livewire/resources/views
Only inpolicy.blade.phplaravel-starter-jetstream-livewire/resources/views
Only inprofilelaravel-starter-jetstream-livewire/resources/views
Only inteamslaravel-starter-jetstream-livewire/resources/views
Only interms.blade.phplaravel-starter-jetstream-livewire/resources/views
Only inwelcome.blade.phplaravel-starter-jetstream-livewire/resources/views
Only inlivewirelaravel-starter-jetstream-livewire/vendor

Änderungen

app/Http/Kernel.php

Changes

<             \App\Http\Middleware\HandleInertiaRequests::class,

Only inapp/Http/Middleware: HandleInertiaRequests.php

Only inlaravel-starter-jetstream-livewire/app: View

bootstrap/cache/packages.php

Changes

<   'inertiajs/inertia-laravel' => 
<   array (
<     'providers' => 
<     array (
<       0 => 'Inertia ServiceProvider',
<     ),
<   ),

Changes

<   'nesbot/carbon' => 
---
>   'livewire/livewire' =>

Changes

<       0 => 'Carbon Laravel ServiceProvider',
---
>       0 => 'Livewire LivewireServiceProvider',
>     ),
>     'aliases' => 
>     array (
>       'Livewire' => 'Livewire Livewire',

Changes

<   'nunomaduro/collision' => 
---
>   'nesbot/carbon' =>

Changes

<       0 => 'NunoMaduro Collision Adapters Laravel CollisionServiceProvider',
---
>       0 => 'Carbon Laravel ServiceProvider',

Changes

<   'tightenco/ziggy' => 
---
>   'nunomaduro/collision' =>

Changes

<       0 => 'Tightenco Ziggy ZiggyServiceProvider',
---
>       0 => 'NunoMaduro Collision Adapters Laravel CollisionServiceProvider',

bootstrap/cache/services.php

Changes

<     24 => 'Inertia ServiceProvider',
<     25 => 'Jenssegers Agent AgentServiceProvider',
<     26 => 'Laravel Fortify FortifyServiceProvider',
<     27 => 'Laravel Jetstream JetstreamServiceProvider',
<     28 => 'Laravel Sail SailServiceProvider',
<     29 => 'Laravel Sanctum SanctumServiceProvider',
<     30 => 'Laravel Tinker TinkerServiceProvider',
---
>     24 => 'Jenssegers Agent AgentServiceProvider',
>     25 => 'Laravel Fortify FortifyServiceProvider',
>     26 => 'Laravel Jetstream JetstreamServiceProvider',
>     27 => 'Laravel Sail SailServiceProvider',
>     28 => 'Laravel Sanctum SanctumServiceProvider',
>     29 => 'Laravel Tinker TinkerServiceProvider',
>     30 => 'Livewire LivewireServiceProvider',

Changes

<     33 => 'Tightenco Ziggy ZiggyServiceProvider',
<     34 => 'App Providers AppServiceProvider',
<     35 => 'App Providers AuthServiceProvider',
<     36 => 'App Providers EventServiceProvider',
<     37 => 'App Providers RouteServiceProvider',
<     38 => 'App Providers FortifyServiceProvider',
<     39 => 'App Providers JetstreamServiceProvider',
---
>     33 => 'App Providers AppServiceProvider',
>     34 => 'App Providers AuthServiceProvider',
>     35 => 'App Providers EventServiceProvider',
>     36 => 'App Providers RouteServiceProvider',
>     37 => 'App Providers FortifyServiceProvider',
>     38 => 'App Providers JetstreamServiceProvider',

Changes

<     12 => 'Inertia ServiceProvider',
<     13 => 'Jenssegers Agent AgentServiceProvider',
<     14 => 'Laravel Fortify FortifyServiceProvider',
<     15 => 'Laravel Jetstream JetstreamServiceProvider',
<     16 => 'Laravel Sanctum SanctumServiceProvider',
---
>     12 => 'Jenssegers Agent AgentServiceProvider',
>     13 => 'Laravel Fortify FortifyServiceProvider',
>     14 => 'Laravel Jetstream JetstreamServiceProvider',
>     15 => 'Laravel Sanctum SanctumServiceProvider',
>     16 => 'Livewire LivewireServiceProvider',

Changes

<     19 => 'Tightenco Ziggy ZiggyServiceProvider',
<     20 => 'App Providers AppServiceProvider',
<     21 => 'App Providers AuthServiceProvider',
<     22 => 'App Providers EventServiceProvider',
<     23 => 'App Providers RouteServiceProvider',
<     24 => 'App Providers FortifyServiceProvider',
<     25 => 'App Providers JetstreamServiceProvider',
---
>     19 => 'App Providers AppServiceProvider',
>     20 => 'App Providers AuthServiceProvider',
>     21 => 'App Providers EventServiceProvider',
>     22 => 'App Providers RouteServiceProvider',
>     23 => 'App Providers FortifyServiceProvider',
>     24 => 'App Providers JetstreamServiceProvider',

composer.json

Changes

<         "inertiajs/inertia-laravel": "^0.5.2",

Changes

<         "tightenco/ziggy": "^1.0"
---
>         "livewire/livewire": "^2.5"

Only in laravel-starter-jetstream-inertia: composer.lock

config/jetstream.php

Changes

<     'stack' => 'inertia',
---
>     'stack' => 'livewire',

Only in database/migrations: 2022_01_16_142014_create_sessions_table.php

Only in

package.json

Changes

<         "@inertiajs/inertia": "^0.10.0",
<         "@inertiajs/inertia-vue3": "^0.5.1",
<         "@inertiajs/progress": "^0.2.6",

Changes

<         "@vue/compiler-sfc": "^3.0.5",
---
>         "alpinejs": "^3.0.6",

Changes

<         "postcss-import": "^12.0.1",
---
>         "postcss-import": "^14.0.1",

Changes

<         "vue": "^3.0.5",
<         "vue-loader": "^16.1.2",

Only in laravel-starter-jetstream-livewire: pnpm-lock.yaml

Only in resources/js: Jetstream

Only in resources/js: Layouts

Only in resources/js: Pages

resources/js/app.js

Changes

< import { createApp, h } from 'vue';
< import { createInertiaApp } from '@inertiajs/inertia-vue3';
< import { InertiaProgress } from '@inertiajs/progress';
---
> import Alpine from 'alpinejs';

Changes

< const appName = window.document.getElementsByTagName('title')[0]?.innerText || 'Laravel';
---
> window.Alpine = Alpine;

Changes

< createInertiaApp({
<     title: (title) => `${title} - ${appName}`,
<     resolve: (name) => require(`./Pages/${name}.vue`),
<     setup({ el, app, props, plugin }) {
<         return createApp({ render: () => h(app, props) })
<             .use(plugin)
<             .mixin({ methods: { route } })
<             .mount(el);
<     },
< });
< 
< InertiaProgress.init({ color: '#4B5563' });
---
> Alpine.start();

Only in

Only in resources/views: app.blade.php

Only in

Only in

Only in

Only inlaravel-starter-jetstream-livewire/resources/views: navigation-menu.blade.php

Only inlaravel-starter-jetstream-livewire/resources/views: policy.blade.php

Only inlaravel-starter-jetstream-livewire/resources/views: profile

Only inlaravel-starter-jetstream-livewire/resources/views: teams

Only inlaravel-starter-jetstream-livewire/resources/views: terms.blade.php

Only inlaravel-starter-jetstream-livewire/resources/views: welcome.blade.php

routes/web.php

Changes

< use Illuminate\Foundation\Application;

Changes

< use Inertia\Inertia;

Changes

<     return Inertia::render('Welcome', [
<         'canLogin' => Route::has('login'),
<         'canRegister' => Route::has('register'),
<         'laravelVersion' => Application::VERSION,
<         'phpVersion' => PHP_VERSION,
<     ]);
---
>     return view('welcome');

Changes

<     return Inertia::render('Dashboard');
---
>     return view('dashboard');

Only instorage/logs: laravel.log

tailwind.config.js

Changes

<         './resources/js/**/*.vue',

tests/Feature/ApiTokenPermissionsTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\ApiTokenManager;
> use Livewire\Livewire;

Changes

<         $response = $this->put('/user/api-tokens/'.$token->id, [
<             'name' => $token->name,
<             'permissions' => [
<                 'delete',
<                 'missing-permission',
<             ],
<         ]);
---
>         Livewire::test(ApiTokenManager::class)
>                     ->set(['managingPermissionsFor' => $token])
>                     ->set(['updateApiTokenForm' => [
>                         'permissions' => [
>                             'delete',
>                             'missing-permission',
>                         ],
>                     ]])
>                     ->call('updateApiToken');
## tests/Feature/BrowserSessionsTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\LogoutOtherBrowserSessionsForm;
> use Livewire\Livewire;

Changes

<         $response = $this->delete('/user/other-browser-sessions', [
<             'password' => 'password',
<         ]);
< 
<         $response->assertSessionHasNoErrors();
---
>         Livewire::test(LogoutOtherBrowserSessionsForm::class)
>                 ->set('password', 'password')
>                 ->call('logoutOtherBrowserSessions');
## tests/Feature/CreateApiTokenTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\ApiTokenManager;
> use Livewire\Livewire;

Changes

<         $response = $this->post('/user/api-tokens', [
<             'name' => 'Test Token',
<             'permissions' => [
<                 'read',
<                 'update',
<             ],
<         ]);
---
>         Livewire::test(ApiTokenManager::class)
>                     ->set(['createApiTokenForm' => [
>                         'name' => 'Test Token',
>                         'permissions' => [
>                             'read',
>                             'update',
>                         ],
>                     ]])
>                     ->call('createApiToken');
## tests/Feature/CreateTeamTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\CreateTeamForm;
> use Livewire\Livewire;

Changes

<         $response = $this->post('/teams', [
<             'name' => 'Test Team',
<         ]);
---
>         Livewire::test(CreateTeamForm::class)
>                     ->set(['state' => ['name' => 'Test Team']])
>                     ->call('createTeam');
## tests/Feature/DeleteAccountTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\DeleteUserForm;
> use Livewire\Livewire;

Changes

<         $response = $this->delete('/user', [
<             'password' => 'password',
<         ]);
---
>         $component = Livewire::test(DeleteUserForm::class)
>                         ->set('password', 'password')
>                         ->call('deleteUser');

Changes

<         $response = $this->delete('/user', [
<             'password' => 'wrong-password',
<         ]);
---
>         Livewire::test(DeleteUserForm::class)
>                         ->set('password', 'wrong-password')
>                         ->call('deleteUser')
>                         ->assertHasErrors(['password']);
## tests/Feature/DeleteApiTokenTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\ApiTokenManager;
> use Livewire\Livewire;

Changes

<         $response = $this->delete('/user/api-tokens/'.$token->id);
---
>         Livewire::test(ApiTokenManager::class)
>                     ->set(['apiTokenIdBeingDeleted' => $token->id])
>                     ->call('deleteApiToken');
## tests/Feature/DeleteTeamTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\DeleteTeamForm;
> use Livewire\Livewire;

Changes

<         $response = $this->delete('/teams/'.$team->id);
---
>         $component = Livewire::test(DeleteTeamForm::class, ['team' => $team->fresh()])
>                                 ->call('deleteTeam');

Changes

<         $response = $this->delete('/teams/'.$user->currentTeam->id);
---
>         $component = Livewire::test(DeleteTeamForm::class, ['team' => $user->currentTeam])
>                                 ->call('deleteTeam')
>                                 ->assertHasErrors(['team']);
## tests/Feature/InviteTeamMemberTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\TeamMemberManager;

Changes

> use Livewire\Livewire;

Changes

<         $response = $this->post('/teams/'.$user->currentTeam->id.'/members', [
<             'email' => 'test@example.com',
<             'role' => 'admin',
<         ]);
---
>         $component = Livewire::test(TeamMemberManager::class, ['team' => $user->currentTeam])
>                         ->set('addTeamMemberForm', [
>                             'email' => 'test@example.com',
>                             'role' => 'admin',
>                         ])->call('addTeamMember');

Changes

<         $invitation = $user->currentTeam->teamInvitations()->create([
<             'email' => 'test@example.com',
<             'role' => 'admin',
<         ]);
---
>         // Add the team member...
>         $component = Livewire::test(TeamMemberManager::class, ['team' => $user->currentTeam])
>                         ->set('addTeamMemberForm', [
>                             'email' => 'test@example.com',
>                             'role' => 'admin',
>                         ])->call('addTeamMember');

Changes

<         $response = $this->delete('/team-invitations/'.$invitation->id);
---
>         $invitationId = $user->currentTeam->fresh()->teamInvitations->first()->id;
> 
>         // Cancel the team invitation...
>         $component->call('cancelTeamInvitation', $invitationId);

tests/Feature/LeaveTeamTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\TeamMemberManager;
> use Livewire\Livewire;

Changes

<         $response = $this->delete('/teams/'.$user->currentTeam->id.'/members/'.$otherUser->id);
---
>         $component = Livewire::test(TeamMemberManager::class, ['team' => $user->currentTeam])
>                         ->call('leaveTeam');

Changes

<         $response = $this->delete('/teams/'.$user->currentTeam->id.'/members/'.$user->id);
< 
<         $response->assertSessionHasErrorsIn('removeTeamMember', ['team']);
---
>         $component = Livewire::test(TeamMemberManager::class, ['team' => $user->currentTeam])
>                         ->call('leaveTeam')
>                         ->assertHasErrors(['team']);
## tests/Feature/ProfileInformationTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\UpdateProfileInformationForm;
> use Livewire\Livewire;

Changes

>     public function test_current_profile_information_is_available()
>     {
>         $this->actingAs($user = User::factory()->create());
> 
>         $component = Livewire::test(UpdateProfileInformationForm::class);
> 
>         $this->assertEquals($user->name, $component->state['name']);
>         $this->assertEquals($user->email, $component->state['email']);
>     }
> 

Changes

<         $response = $this->put('/user/profile-information', [
<             'name' => 'Test Name',
<             'email' => 'test@example.com',
<         ]);
---
>         Livewire::test(UpdateProfileInformationForm::class)
>                 ->set('state', ['name' => 'Test Name', 'email' => 'test@example.com'])
>                 ->call('updateProfileInformation');
## tests/Feature/RemoveTeamMemberTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\TeamMemberManager;
> use Livewire\Livewire;

Changes

<         $response = $this->delete('/teams/'.$user->currentTeam->id.'/members/'.$otherUser->id);
---
>         $component = Livewire::test(TeamMemberManager::class, ['team' => $user->currentTeam])
>                         ->set('teamMemberIdBeingRemoved', $otherUser->id)
>                         ->call('removeTeamMember');

Changes

<         $response = $this->delete('/teams/'.$user->currentTeam->id.'/members/'.$user->id);
< 
<         $response->assertStatus(403);
---
>         $component = Livewire::test(TeamMemberManager::class, ['team' => $user->currentTeam])
>                         ->set('teamMemberIdBeingRemoved', $user->id)
>                         ->call('removeTeamMember')
>                         ->assertStatus(403);
## tests/Feature/TwoFactorAuthenticationSettingsTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\TwoFactorAuthenticationForm;
> use Livewire\Livewire;

Changes

<         $response = $this->post('/user/two-factor-authentication');
---
>         Livewire::test(TwoFactorAuthenticationForm::class)
>                 ->call('enableTwoFactorAuthentication');

Changes

<         $this->assertNotNull($user->fresh()->two_factor_secret);
<         $this->assertCount(8, $user->fresh()->recoveryCodes());
---
>         $user = $user->fresh();
> 
>         $this->assertNotNull($user->two_factor_secret);
>         $this->assertCount(8, $user->recoveryCodes());

Changes

<         $this->post('/user/two-factor-authentication');
<         $this->post('/user/two-factor-recovery-codes');
---
>         $component = Livewire::test(TwoFactorAuthenticationForm::class)
>                 ->call('enableTwoFactorAuthentication')
>                 ->call('regenerateRecoveryCodes');

Changes

<         $this->post('/user/two-factor-recovery-codes');
---
>         $component->call('regenerateRecoveryCodes');

Changes

<         $this->post('/user/two-factor-authentication');
---
>         $component = Livewire::test(TwoFactorAuthenticationForm::class)
>                 ->call('enableTwoFactorAuthentication');

Changes

<         $this->delete('/user/two-factor-authentication');
---
>         $component->call('disableTwoFactorAuthentication');
## tests/Feature/UpdatePasswordTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\UpdatePasswordForm;
> use Livewire\Livewire;

Changes

<         $response = $this->put('/user/password', [
<             'current_password' => 'password',
<             'password' => 'new-password',
<             'password_confirmation' => 'new-password',
<         ]);
---
>         Livewire::test(UpdatePasswordForm::class)
>                 ->set('state', [
>                     'current_password' => 'password',
>                     'password' => 'new-password',
>                     'password_confirmation' => 'new-password',
>                 ])
>                 ->call('updatePassword');

Changes

<         $response = $this->put('/user/password', [
<             'current_password' => 'wrong-password',
<             'password' => 'new-password',
<             'password_confirmation' => 'new-password',
<         ]);
< 
<         $response->assertSessionHasErrors();
---
>         Livewire::test(UpdatePasswordForm::class)
>                 ->set('state', [
>                     'current_password' => 'wrong-password',
>                     'password' => 'new-password',
>                     'password_confirmation' => 'new-password',
>                 ])
>                 ->call('updatePassword')
>                 ->assertHasErrors(['current_password']);

Changes

<         $response = $this->put('/user/password', [
<             'current_password' => 'password',
<             'password' => 'new-password',
<             'password_confirmation' => 'wrong-password',
<         ]);
< 
<         $response->assertSessionHasErrors();
---
>         Livewire::test(UpdatePasswordForm::class)
>                 ->set('state', [
>                     'current_password' => 'password',
>                     'password' => 'new-password',
>                     'password_confirmation' => 'wrong-password',
>                 ])
>                 ->call('updatePassword')
>                 ->assertHasErrors(['password']);
## tests/Feature/UpdateTeamMemberRoleTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\TeamMemberManager;
> use Livewire\Livewire;

Changes

<         $response = $this->put('/teams/'.$user->currentTeam->id.'/members/'.$otherUser->id, [
<             'role' => 'editor',
<         ]);
---
>         $component = Livewire::test(TeamMemberManager::class, ['team' => $user->currentTeam])
>                         ->set('managingRoleFor', $otherUser)
>                         ->set('currentRole', 'editor')
>                         ->call('updateRole');

Changes

<         $response = $this->put('/teams/'.$user->currentTeam->id.'/members/'.$otherUser->id, [
<             'role' => 'editor',
<         ]);
---
>         $component = Livewire::test(TeamMemberManager::class, ['team' => $user->currentTeam])
>                         ->set('managingRoleFor', $otherUser)
>                         ->set('currentRole', 'editor')
>                         ->call('updateRole')
>                         ->assertStatus(403);
## tests/Feature/UpdateTeamNameTest.php

Changes

> use Laravel\Jetstream\Http\Livewire\UpdateTeamNameForm;
> use Livewire\Livewire;

Changes

<         $response = $this->put('/teams/'.$user->currentTeam->id, [
<             'name' => 'Test Team',
<         ]);
---
>         Livewire::test(UpdateTeamNameForm::class, ['team' => $user->currentTeam])
>                     ->set(['state' => ['name' => 'Test Team']])
>                     ->call('updateTeamName');

vendor/autoload.php

Changes

< return ComposerAutoloaderInit1a366ea8c9013f37377c59393191f427::getLoader();
---
> return ComposerAutoloaderInitf2da6e83b085fd96649a1eced6ba9cbb::getLoader();
## vendor/composer/autoload_classmap.php

Changes

<     'Inertia Console CreateMiddleware' => $vendorDir . '/inertiajs/inertia-laravel/src/Console/CreateMiddleware.php',
<     'Inertia Controller' => $vendorDir . '/inertiajs/inertia-laravel/src/Controller.php',
<     'Inertia Directive' => $vendorDir . '/inertiajs/inertia-laravel/src/Directive.php',
<     'Inertia Inertia' => $vendorDir . '/inertiajs/inertia-laravel/src/Inertia.php',
<     'Inertia LazyProp' => $vendorDir . '/inertiajs/inertia-laravel/src/LazyProp.php',
<     'Inertia Middleware' => $vendorDir . '/inertiajs/inertia-laravel/src/Middleware.php',
<     'Inertia Response' => $vendorDir . '/inertiajs/inertia-laravel/src/Response.php',
<     'Inertia ResponseFactory' => $vendorDir . '/inertiajs/inertia-laravel/src/ResponseFactory.php',
<     'Inertia ServiceProvider' => $vendorDir . '/inertiajs/inertia-laravel/src/ServiceProvider.php',
<     'Inertia Ssr Gateway' => $vendorDir . '/inertiajs/inertia-laravel/src/Ssr/Gateway.php',
<     'Inertia Ssr HttpGateway' => $vendorDir . '/inertiajs/inertia-laravel/src/Ssr/HttpGateway.php',
<     'Inertia Ssr Response' => $vendorDir . '/inertiajs/inertia-laravel/src/Ssr/Response.php',
<     'Inertia Testing Assert' => $vendorDir . '/inertiajs/inertia-laravel/src/Testing/Assert.php',
<     'Inertia Testing AssertableInertia' => $vendorDir . '/inertiajs/inertia-laravel/src/Testing/AssertableInertia.php',
<     'Inertia Testing Concerns Debugging' => $vendorDir . '/inertiajs/inertia-laravel/src/Testing/Concerns/Debugging.php',
<     'Inertia Testing Concerns Has' => $vendorDir . '/inertiajs/inertia-laravel/src/Testing/Concerns/Has.php',
<     'Inertia Testing Concerns Interaction' => $vendorDir . '/inertiajs/inertia-laravel/src/Testing/Concerns/Interaction.php',
<     'Inertia Testing Concerns Matching' => $vendorDir . '/inertiajs/inertia-laravel/src/Testing/Concerns/Matching.php',
<     'Inertia Testing Concerns PageObject' => $vendorDir . '/inertiajs/inertia-laravel/src/Testing/Concerns/PageObject.php',
<     'Inertia Testing TestResponseMacros' => $vendorDir . '/inertiajs/inertia-laravel/src/Testing/TestResponseMacros.php',

Changes

>     'Livewire Castable' => $vendorDir . '/livewire/livewire/src/Castable.php',
>     'Livewire Commands ComponentParser' => $vendorDir . '/livewire/livewire/src/Commands/ComponentParser.php',
>     'Livewire Commands ComponentParserFromExistingComponent' => $vendorDir . '/livewire/livewire/src/Commands/ComponentParserFromExistingComponent.php',
>     'Livewire Commands CopyCommand' => $vendorDir . '/livewire/livewire/src/Commands/CopyCommand.php',
>     'Livewire Commands CpCommand' => $vendorDir . '/livewire/livewire/src/Commands/CpCommand.php',
>     'Livewire Commands DeleteCommand' => $vendorDir . '/livewire/livewire/src/Commands/DeleteCommand.php',
>     'Livewire Commands DiscoverCommand' => $vendorDir . '/livewire/livewire/src/Commands/DiscoverCommand.php',
>     'Livewire Commands FileManipulationCommand' => $vendorDir . '/livewire/livewire/src/Commands/FileManipulationCommand.php',
>     'Livewire Commands MakeCommand' => $vendorDir . '/livewire/livewire/src/Commands/MakeCommand.php',
>     'Livewire Commands MakeLivewireCommand' => $vendorDir . '/livewire/livewire/src/Commands/MakeLivewireCommand.php',
>     'Livewire Commands MoveCommand' => $vendorDir . '/livewire/livewire/src/Commands/MoveCommand.php',
>     'Livewire Commands MvCommand' => $vendorDir . '/livewire/livewire/src/Commands/MvCommand.php',
>     'Livewire Commands PublishCommand' => $vendorDir . '/livewire/livewire/src/Commands/PublishCommand.php',
>     'Livewire Commands RmCommand' => $vendorDir . '/livewire/livewire/src/Commands/RmCommand.php',
>     'Livewire Commands S3CleanupCommand' => $vendorDir . '/livewire/livewire/src/Commands/S3CleanupCommand.php',
>     'Livewire Commands StubParser' => $vendorDir . '/livewire/livewire/src/Commands/StubParser.php',
>     'Livewire Commands StubsCommand' => $vendorDir . '/livewire/livewire/src/Commands/StubsCommand.php',
>     'Livewire Commands TouchCommand' => $vendorDir . '/livewire/livewire/src/Commands/TouchCommand.php',
>     'Livewire CompilerEngineForIgnition' => $vendorDir . '/livewire/livewire/src/CompilerEngineForIgnition.php',
>     'Livewire Component' => $vendorDir . '/livewire/livewire/src/Component.php',
>     'Livewire ComponentChecksumManager' => $vendorDir . '/livewire/livewire/src/ComponentChecksumManager.php',
>     'Livewire ComponentConcerns HandlesActions' => $vendorDir . '/livewire/livewire/src/ComponentConcerns/HandlesActions.php',
>     'Livewire ComponentConcerns InteractsWithProperties' => $vendorDir . '/livewire/livewire/src/ComponentConcerns/InteractsWithProperties.php',
>     'Livewire ComponentConcerns PerformsRedirects' => $vendorDir . '/livewire/livewire/src/ComponentConcerns/PerformsRedirects.php',
>     'Livewire ComponentConcerns ReceivesEvents' => $vendorDir . '/livewire/livewire/src/ComponentConcerns/ReceivesEvents.php',
>     'Livewire ComponentConcerns RendersLivewireComponents' => $vendorDir . '/livewire/livewire/src/ComponentConcerns/RendersLivewireComponents.php',
>     'Livewire ComponentConcerns TracksRenderedChildren' => $vendorDir . '/livewire/livewire/src/ComponentConcerns/TracksRenderedChildren.php',
>     'Livewire ComponentConcerns ValidatesInput' => $vendorDir . '/livewire/livewire/src/ComponentConcerns/ValidatesInput.php',
>     'Livewire Connection ConnectionHandler' => $vendorDir . '/livewire/livewire/src/Connection/ConnectionHandler.php',
>     'Livewire Controllers CanPretendToBeAFile' => $vendorDir . '/livewire/livewire/src/Controllers/CanPretendToBeAFile.php',
>     'Livewire Controllers FilePreviewHandler' => $vendorDir . '/livewire/livewire/src/Controllers/FilePreviewHandler.php',
>     'Livewire Controllers FileUploadHandler' => $vendorDir . '/livewire/livewire/src/Controllers/FileUploadHandler.php',
>     'Livewire Controllers HttpConnectionHandler' => $vendorDir . '/livewire/livewire/src/Controllers/HttpConnectionHandler.php',
>     'Livewire Controllers LivewireJavaScriptAssets' => $vendorDir . '/livewire/livewire/src/Controllers/LivewireJavaScriptAssets.php',
>     'Livewire CreateBladeView' => $vendorDir . '/livewire/livewire/src/CreateBladeView.php',
>     'Livewire DisableBrowserCache' => $vendorDir . '/livewire/livewire/src/DisableBrowserCache.php',
>     'Livewire Event' => $vendorDir . '/livewire/livewire/src/Event.php',
>     'Livewire Exceptions BypassViewHandler' => $vendorDir . '/livewire/livewire/src/Exceptions/BypassViewHandler.php',
>     'Livewire Exceptions CannotBindToModelDataWithoutValidationRuleException' => $vendorDir . '/livewire/livewire/src/Exceptions/CannotBindToModelDataWithoutValidationRuleException.php',
>     'Livewire Exceptions CannotUseReservedLivewireComponentProperties' => $vendorDir . '/livewire/livewire/src/Exceptions/CannotUseReservedLivewireComponentProperties.php',
>     'Livewire Exceptions ComponentAttributeMissingOnDynamicComponentException' => $vendorDir . '/livewire/livewire/src/Exceptions/ComponentAttributeMissingOnDynamicComponentException.php',
>     'Livewire Exceptions ComponentNotFoundException' => $vendorDir . '/livewire/livewire/src/Exceptions/ComponentNotFoundException.php',
>     'Livewire Exceptions CorruptComponentPayloadException' => $vendorDir . '/livewire/livewire/src/Exceptions/CorruptComponentPayloadException.php',
>     'Livewire Exceptions DirectlyCallingLifecycleHooksNotAllowedException' => $vendorDir . '/livewire/livewire/src/Exceptions/DirectlyCallingLifecycleHooksNotAllowedException.php',
>     'Livewire Exceptions LivewirePageExpiredBecauseNewDeploymentHasSignificantEnoughChanges' => $vendorDir . '/livewire/livewire/src/Exceptions/LivewirePageExpiredBecauseNewDeploymentHasSignificantEnoughChanges.php',
>     'Livewire Exceptions MethodNotFoundException' => $vendorDir . '/livewire/livewire/src/Exceptions/MethodNotFoundException.php',
>     'Livewire Exceptions MissingFileUploadsTraitException' => $vendorDir . '/livewire/livewire/src/Exceptions/MissingFileUploadsTraitException.php',
>     'Livewire Exceptions MissingRulesException' => $vendorDir . '/livewire/livewire/src/Exceptions/MissingRulesException.php',
>     'Livewire Exceptions NonPublicComponentMethodCall' => $vendorDir . '/livewire/livewire/src/Exceptions/NonPublicComponentMethodCall.php',
>     'Livewire Exceptions PropertyNotFoundException' => $vendorDir . '/livewire/livewire/src/Exceptions/PropertyNotFoundException.php',
>     'Livewire Exceptions PublicPropertyNotFoundException' => $vendorDir . '/livewire/livewire/src/Exceptions/PublicPropertyNotFoundException.php',
>     'Livewire Exceptions PublicPropertyTypeNotAllowedException' => $vendorDir . '/livewire/livewire/src/Exceptions/PublicPropertyTypeNotAllowedException.php',
>     'Livewire Exceptions RootTagMissingFromViewException' => $vendorDir . '/livewire/livewire/src/Exceptions/RootTagMissingFromViewException.php',
>     'Livewire Exceptions S3DoesntSupportMultipleFileUploads' => $vendorDir . '/livewire/livewire/src/Exceptions/S3DoesntSupportMultipleFileUploads.php',
>     'Livewire Features OptimizeRenderedDom' => $vendorDir . '/livewire/livewire/src/Features/OptimizeRenderedDom.php',
>     'Livewire Features Placeholder' => $vendorDir . '/livewire/livewire/src/Features/Placeholder.php',
>     'Livewire Features SupportActionReturns' => $vendorDir . '/livewire/livewire/src/Features/SupportActionReturns.php',
>     'Livewire Features SupportBootMethod' => $vendorDir . '/livewire/livewire/src/Features/SupportBootMethod.php',
>     'Livewire Features SupportBrowserHistory' => $vendorDir . '/livewire/livewire/src/Features/SupportBrowserHistory.php',
>     'Livewire Features SupportChildren' => $vendorDir . '/livewire/livewire/src/Features/SupportChildren.php',
>     'Livewire Features SupportCollections' => $vendorDir . '/livewire/livewire/src/Features/SupportCollections.php',
>     'Livewire Features SupportComponentTraits' => $vendorDir . '/livewire/livewire/src/Features/SupportComponentTraits.php',
>     'Livewire Features SupportDateTimes' => $vendorDir . '/livewire/livewire/src/Features/SupportDateTimes.php',
>     'Livewire Features SupportEvents' => $vendorDir . '/livewire/livewire/src/Features/SupportEvents.php',
>     'Livewire Features SupportFileDownloads' => $vendorDir . '/livewire/livewire/src/Features/SupportFileDownloads.php',
>     'Livewire Features SupportFileUploads' => $vendorDir . '/livewire/livewire/src/Features/SupportFileUploads.php',
>     'Livewire Features SupportLocales' => $vendorDir . '/livewire/livewire/src/Features/SupportLocales.php',
>     'Livewire Features SupportPostDeploymentInvalidation' => $vendorDir . '/livewire/livewire/src/Features/SupportPostDeploymentInvalidation.php',
>     'Livewire Features SupportRedirects' => $vendorDir . '/livewire/livewire/src/Features/SupportRedirects.php',
>     'Livewire Features SupportRootElementTracking' => $vendorDir . '/livewire/livewire/src/Features/SupportRootElementTracking.php',
>     'Livewire Features SupportStacks' => $vendorDir . '/livewire/livewire/src/Features/SupportStacks.php',
>     'Livewire Features SupportValidation' => $vendorDir . '/livewire/livewire/src/Features/SupportValidation.php',
>     'Livewire FileUploadConfiguration' => $vendorDir . '/livewire/livewire/src/FileUploadConfiguration.php',
>     'Livewire GenerateSignedUploadUrl' => $vendorDir . '/livewire/livewire/src/GenerateSignedUploadUrl.php',
>     'Livewire HydrationMiddleware AddAttributesToRootTagOfHtml' => $vendorDir . '/livewire/livewire/src/HydrationMiddleware/AddAttributesToRootTagOfHtml.php',
>     'Livewire HydrationMiddleware CallHydrationHooks' => $vendorDir . '/livewire/livewire/src/HydrationMiddleware/CallHydrationHooks.php',
>     'Livewire HydrationMiddleware CallPropertyHydrationHooks' => $vendorDir . '/livewire/livewire/src/HydrationMiddleware/CallPropertyHydrationHooks.php',
>     'Livewire HydrationMiddleware HashDataPropertiesForDirtyDetection' => $vendorDir . '/livewire/livewire/src/HydrationMiddleware/HashDataPropertiesForDirtyDetection.php',
>     'Livewire HydrationMiddleware HydratePublicProperties' => $vendorDir . '/livewire/livewire/src/HydrationMiddleware/HydratePublicProperties.php',
>     'Livewire HydrationMiddleware HydrationMiddleware' => $vendorDir . '/livewire/livewire/src/HydrationMiddleware/HydrationMiddleware.php',
>     'Livewire HydrationMiddleware NormalizeComponentPropertiesForJavaScript' => $vendorDir . '/livewire/livewire/src/HydrationMiddleware/NormalizeComponentPropertiesForJavaScript.php',
>     'Livewire HydrationMiddleware NormalizeDataForJavaScript' => $vendorDir . '/livewire/livewire/src/HydrationMiddleware/NormalizeDataForJavaScript.php',
>     'Livewire HydrationMiddleware NormalizeServerMemoSansDataForJavaScript' => $vendorDir . '/livewire/livewire/src/HydrationMiddleware/NormalizeServerMemoSansDataForJavaScript.php',
>     'Livewire HydrationMiddleware PerformActionCalls' => $vendorDir . '/livewire/livewire/src/HydrationMiddleware/PerformActionCalls.php',
>     'Livewire HydrationMiddleware PerformDataBindingUpdates' => $vendorDir . '/livewire/livewire/src/HydrationMiddleware/PerformDataBindingUpdates.php',
>     'Livewire HydrationMiddleware PerformEventEmissions' => $vendorDir . '/livewire/livewire/src/HydrationMiddleware/PerformEventEmissions.php',
>     'Livewire HydrationMiddleware RenderView' => $vendorDir . '/livewire/livewire/src/HydrationMiddleware/RenderView.php',
>     'Livewire HydrationMiddleware SecureHydrationWithChecksum' => $vendorDir . '/livewire/livewire/src/HydrationMiddleware/SecureHydrationWithChecksum.php',
>     'Livewire ImplicitRouteBinding' => $vendorDir . '/livewire/livewire/src/ImplicitRouteBinding.php',
>     'Livewire ImplicitlyBoundMethod' => $vendorDir . '/livewire/livewire/src/ImplicitlyBoundMethod.php',
>     'Livewire LifecycleManager' => $vendorDir . '/livewire/livewire/src/LifecycleManager.php',
>     'Livewire Livewire' => $vendorDir . '/livewire/livewire/src/Livewire.php',
>     'Livewire LivewireBladeDirectives' => $vendorDir . '/livewire/livewire/src/LivewireBladeDirectives.php',
>     'Livewire LivewireComponentsFinder' => $vendorDir . '/livewire/livewire/src/LivewireComponentsFinder.php',
>     'Livewire LivewireManager' => $vendorDir . '/livewire/livewire/src/LivewireManager.php',
>     'Livewire LivewireServiceProvider' => $vendorDir . '/livewire/livewire/src/LivewireServiceProvider.php',
>     'Livewire LivewireTagCompiler' => $vendorDir . '/livewire/livewire/src/LivewireTagCompiler.php',
>     'Livewire LivewireViewCompilerEngine' => $vendorDir . '/livewire/livewire/src/LivewireViewCompilerEngine.php',
>     'Livewire Macros DuskBrowserMacros' => $vendorDir . '/livewire/livewire/src/Macros/DuskBrowserMacros.php',
>     'Livewire Macros ViewMacros' => $vendorDir . '/livewire/livewire/src/Macros/ViewMacros.php',
>     'Livewire ObjectPrybar' => $vendorDir . '/livewire/livewire/src/ObjectPrybar.php',
>     'Livewire Redirector' => $vendorDir . '/livewire/livewire/src/Redirector.php',
>     'Livewire Request' => $vendorDir . '/livewire/livewire/src/Request.php',
>     'Livewire Response' => $vendorDir . '/livewire/livewire/src/Response.php',
>     'Livewire TemporaryUploadedFile' => $vendorDir . '/livewire/livewire/src/TemporaryUploadedFile.php',
>     'Livewire Testing Concerns HasFunLittleUtilities' => $vendorDir . '/livewire/livewire/src/Testing/Concerns/HasFunLittleUtilities.php',
>     'Livewire Testing Concerns MakesAssertions' => $vendorDir . '/livewire/livewire/src/Testing/Concerns/MakesAssertions.php',
>     'Livewire Testing Concerns MakesCallsToComponent' => $vendorDir . '/livewire/livewire/src/Testing/Concerns/MakesCallsToComponent.php',
>     'Livewire Testing MakesHttpRequestsWrapper' => $vendorDir . '/livewire/livewire/src/Testing/MakesHttpRequestsWrapper.php',
>     'Livewire Testing TestableLivewire' => $vendorDir . '/livewire/livewire/src/Testing/TestableLivewire.php',
>     'Livewire WireDirective' => $vendorDir . '/livewire/livewire/src/WireDirective.php',
>     'Livewire Wireable' => $vendorDir . '/livewire/livewire/src/Wireable.php',
>     'Livewire WithFileUploads' => $vendorDir . '/livewire/livewire/src/WithFileUploads.php',
>     'Livewire WithPagination' => $vendorDir . '/livewire/livewire/src/WithPagination.php',

Changes

<     'Tightenco Ziggy BladeRouteGenerator' => $vendorDir . '/tightenco/ziggy/src/BladeRouteGenerator.php',
<     'Tightenco Ziggy CommandRouteGenerator' => $vendorDir . '/tightenco/ziggy/src/CommandRouteGenerator.php',
<     'Tightenco Ziggy Ziggy' => $vendorDir . '/tightenco/ziggy/src/Ziggy.php',
<     'Tightenco Ziggy ZiggyServiceProvider' => $vendorDir . '/tightenco/ziggy/src/ZiggyServiceProvider.php',

vendor/composer/autoload_files.php

Changes

<     '98caa11a197f6516a8e48aa4abb5ccc6' => $vendorDir . '/inertiajs/inertia-laravel/helpers.php',
---
>     '40275907c8566c390185147049ef6e5d' => $vendorDir . '/livewire/livewire/src/helpers.php',

vendor/composer/autoload_psr4.php

Changes

<     'Tightenco Ziggy ' => array($vendorDir . '/tightenco/ziggy/src'),

Changes

>     'Livewire ' => array($vendorDir . '/livewire/livewire/src'),

Changes

<     'Inertia ' => array($vendorDir . '/inertiajs/inertia-laravel/src'),

vendor/composer/autoload_real.php

Changes

< class ComposerAutoloaderInit1a366ea8c9013f37377c59393191f427
---
> class ComposerAutoloaderInitf2da6e83b085fd96649a1eced6ba9cbb

Changes

<         spl_autoload_register(array('ComposerAutoloaderInit1a366ea8c9013f37377c59393191f427', 'loadClassLoader'), true, true);
---
>         spl_autoload_register(array('ComposerAutoloaderInitf2da6e83b085fd96649a1eced6ba9cbb', 'loadClassLoader'), true, true);

Changes

<         spl_autoload_unregister(array('ComposerAutoloaderInit1a366ea8c9013f37377c59393191f427', 'loadClassLoader'));
---
>         spl_autoload_unregister(array('ComposerAutoloaderInitf2da6e83b085fd96649a1eced6ba9cbb', 'loadClassLoader'));

Changes

<             call_user_func(\Composer\Autoload\ComposerStaticInit1a366ea8c9013f37377c59393191f427::getInitializer($loader));
---
>             call_user_func(\Composer\Autoload\ComposerStaticInitf2da6e83b085fd96649a1eced6ba9cbb::getInitializer($loader));

Changes

<             $includeFiles = Composer\Autoload\ComposerStaticInit1a366ea8c9013f37377c59393191f427::$files;
---
>             $includeFiles = Composer\Autoload\ComposerStaticInitf2da6e83b085fd96649a1eced6ba9cbb::$files;

Changes

<             composerRequire1a366ea8c9013f37377c59393191f427($fileIdentifier, $file);
---
>             composerRequiref2da6e83b085fd96649a1eced6ba9cbb($fileIdentifier, $file);

Changes

< function composerRequire1a366ea8c9013f37377c59393191f427($fileIdentifier, $file)
---
> function composerRequiref2da6e83b085fd96649a1eced6ba9cbb($fileIdentifier, $file)

vendor/composer/autoload_static.php

Changes

< class ComposerStaticInit1a366ea8c9013f37377c59393191f427
---
> class ComposerStaticInitf2da6e83b085fd96649a1eced6ba9cbb

Changes

<         '98caa11a197f6516a8e48aa4abb5ccc6' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/helpers.php',
---
>         '40275907c8566c390185147049ef6e5d' => __DIR__ . '/..' . '/livewire/livewire/src/helpers.php',

Changes

<             'Tightenco Ziggy ' => 16,

Changes

>             'Livewire ' => 9,

Changes

<             'Inertia ' => 8,

Changes

<         'Tightenco Ziggy ' => 
<         array (
<             0 => __DIR__ . '/..' . '/tightenco/ziggy/src',
<         ),

Changes

>         'Livewire ' => 
>         array (
>             0 => __DIR__ . '/..' . '/livewire/livewire/src',
>         ),

Changes

<         'Inertia ' => 
<         array (
<             0 => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src',
<         ),

Changes

<         'Inertia Console CreateMiddleware' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Console/CreateMiddleware.php',
<         'Inertia Controller' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Controller.php',
<         'Inertia Directive' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Directive.php',
<         'Inertia Inertia' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Inertia.php',
<         'Inertia LazyProp' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/LazyProp.php',
<         'Inertia Middleware' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Middleware.php',
<         'Inertia Response' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Response.php',
<         'Inertia ResponseFactory' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/ResponseFactory.php',
<         'Inertia ServiceProvider' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/ServiceProvider.php',
<         'Inertia Ssr Gateway' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Ssr/Gateway.php',
<         'Inertia Ssr HttpGateway' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Ssr/HttpGateway.php',
<         'Inertia Ssr Response' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Ssr/Response.php',
<         'Inertia Testing Assert' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Testing/Assert.php',
<         'Inertia Testing AssertableInertia' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Testing/AssertableInertia.php',
<         'Inertia Testing Concerns Debugging' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Testing/Concerns/Debugging.php',
<         'Inertia Testing Concerns Has' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Testing/Concerns/Has.php',
<         'Inertia Testing Concerns Interaction' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Testing/Concerns/Interaction.php',
<         'Inertia Testing Concerns Matching' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Testing/Concerns/Matching.php',
<         'Inertia Testing Concerns PageObject' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Testing/Concerns/PageObject.php',
<         'Inertia Testing TestResponseMacros' => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src/Testing/TestResponseMacros.php',

Changes

>         'Livewire Castable' => __DIR__ . '/..' . '/livewire/livewire/src/Castable.php',
>         'Livewire Commands ComponentParser' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/ComponentParser.php',
>         'Livewire Commands ComponentParserFromExistingComponent' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/ComponentParserFromExistingComponent.php',
>         'Livewire Commands CopyCommand' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/CopyCommand.php',
>         'Livewire Commands CpCommand' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/CpCommand.php',
>         'Livewire Commands DeleteCommand' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/DeleteCommand.php',
>         'Livewire Commands DiscoverCommand' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/DiscoverCommand.php',
>         'Livewire Commands FileManipulationCommand' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/FileManipulationCommand.php',
>         'Livewire Commands MakeCommand' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/MakeCommand.php',
>         'Livewire Commands MakeLivewireCommand' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/MakeLivewireCommand.php',
>         'Livewire Commands MoveCommand' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/MoveCommand.php',
>         'Livewire Commands MvCommand' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/MvCommand.php',
>         'Livewire Commands PublishCommand' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/PublishCommand.php',
>         'Livewire Commands RmCommand' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/RmCommand.php',
>         'Livewire Commands S3CleanupCommand' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/S3CleanupCommand.php',
>         'Livewire Commands StubParser' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/StubParser.php',
>         'Livewire Commands StubsCommand' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/StubsCommand.php',
>         'Livewire Commands TouchCommand' => __DIR__ . '/..' . '/livewire/livewire/src/Commands/TouchCommand.php',
>         'Livewire CompilerEngineForIgnition' => __DIR__ . '/..' . '/livewire/livewire/src/CompilerEngineForIgnition.php',
>         'Livewire Component' => __DIR__ . '/..' . '/livewire/livewire/src/Component.php',
>         'Livewire ComponentChecksumManager' => __DIR__ . '/..' . '/livewire/livewire/src/ComponentChecksumManager.php',
>         'Livewire ComponentConcerns HandlesActions' => __DIR__ . '/..' . '/livewire/livewire/src/ComponentConcerns/HandlesActions.php',
>         'Livewire ComponentConcerns InteractsWithProperties' => __DIR__ . '/..' . '/livewire/livewire/src/ComponentConcerns/InteractsWithProperties.php',
>         'Livewire ComponentConcerns PerformsRedirects' => __DIR__ . '/..' . '/livewire/livewire/src/ComponentConcerns/PerformsRedirects.php',
>         'Livewire ComponentConcerns ReceivesEvents' => __DIR__ . '/..' . '/livewire/livewire/src/ComponentConcerns/ReceivesEvents.php',
>         'Livewire ComponentConcerns RendersLivewireComponents' => __DIR__ . '/..' . '/livewire/livewire/src/ComponentConcerns/RendersLivewireComponents.php',
>         'Livewire ComponentConcerns TracksRenderedChildren' => __DIR__ . '/..' . '/livewire/livewire/src/ComponentConcerns/TracksRenderedChildren.php',
>         'Livewire ComponentConcerns ValidatesInput' => __DIR__ . '/..' . '/livewire/livewire/src/ComponentConcerns/ValidatesInput.php',
>         'Livewire Connection ConnectionHandler' => __DIR__ . '/..' . '/livewire/livewire/src/Connection/ConnectionHandler.php',
>         'Livewire Controllers CanPretendToBeAFile' => __DIR__ . '/..' . '/livewire/livewire/src/Controllers/CanPretendToBeAFile.php',
>         'Livewire Controllers FilePreviewHandler' => __DIR__ . '/..' . '/livewire/livewire/src/Controllers/FilePreviewHandler.php',
>         'Livewire Controllers FileUploadHandler' => __DIR__ . '/..' . '/livewire/livewire/src/Controllers/FileUploadHandler.php',
>         'Livewire Controllers HttpConnectionHandler' => __DIR__ . '/..' . '/livewire/livewire/src/Controllers/HttpConnectionHandler.php',
>         'Livewire Controllers LivewireJavaScriptAssets' => __DIR__ . '/..' . '/livewire/livewire/src/Controllers/LivewireJavaScriptAssets.php',
>         'Livewire CreateBladeView' => __DIR__ . '/..' . '/livewire/livewire/src/CreateBladeView.php',
>         'Livewire DisableBrowserCache' => __DIR__ . '/..' . '/livewire/livewire/src/DisableBrowserCache.php',
>         'Livewire Event' => __DIR__ . '/..' . '/livewire/livewire/src/Event.php',
>         'Livewire Exceptions BypassViewHandler' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/BypassViewHandler.php',
>         'Livewire Exceptions CannotBindToModelDataWithoutValidationRuleException' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/CannotBindToModelDataWithoutValidationRuleException.php',
>         'Livewire Exceptions CannotUseReservedLivewireComponentProperties' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/CannotUseReservedLivewireComponentProperties.php',
>         'Livewire Exceptions ComponentAttributeMissingOnDynamicComponentException' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/ComponentAttributeMissingOnDynamicComponentException.php',
>         'Livewire Exceptions ComponentNotFoundException' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/ComponentNotFoundException.php',
>         'Livewire Exceptions CorruptComponentPayloadException' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/CorruptComponentPayloadException.php',
>         'Livewire Exceptions DirectlyCallingLifecycleHooksNotAllowedException' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/DirectlyCallingLifecycleHooksNotAllowedException.php',
>         'Livewire Exceptions LivewirePageExpiredBecauseNewDeploymentHasSignificantEnoughChanges' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/LivewirePageExpiredBecauseNewDeploymentHasSignificantEnoughChanges.php',
>         'Livewire Exceptions MethodNotFoundException' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/MethodNotFoundException.php',
>         'Livewire Exceptions MissingFileUploadsTraitException' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/MissingFileUploadsTraitException.php',
>         'Livewire Exceptions MissingRulesException' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/MissingRulesException.php',
>         'Livewire Exceptions NonPublicComponentMethodCall' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/NonPublicComponentMethodCall.php',
>         'Livewire Exceptions PropertyNotFoundException' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/PropertyNotFoundException.php',
>         'Livewire Exceptions PublicPropertyNotFoundException' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/PublicPropertyNotFoundException.php',
>         'Livewire Exceptions PublicPropertyTypeNotAllowedException' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/PublicPropertyTypeNotAllowedException.php',
>         'Livewire Exceptions RootTagMissingFromViewException' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/RootTagMissingFromViewException.php',
>         'Livewire Exceptions S3DoesntSupportMultipleFileUploads' => __DIR__ . '/..' . '/livewire/livewire/src/Exceptions/S3DoesntSupportMultipleFileUploads.php',
>         'Livewire Features OptimizeRenderedDom' => __DIR__ . '/..' . '/livewire/livewire/src/Features/OptimizeRenderedDom.php',
>         'Livewire Features Placeholder' => __DIR__ . '/..' . '/livewire/livewire/src/Features/Placeholder.php',
>         'Livewire Features SupportActionReturns' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportActionReturns.php',
>         'Livewire Features SupportBootMethod' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportBootMethod.php',
>         'Livewire Features SupportBrowserHistory' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportBrowserHistory.php',
>         'Livewire Features SupportChildren' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportChildren.php',
>         'Livewire Features SupportCollections' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportCollections.php',
>         'Livewire Features SupportComponentTraits' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportComponentTraits.php',
>         'Livewire Features SupportDateTimes' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportDateTimes.php',
>         'Livewire Features SupportEvents' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportEvents.php',
>         'Livewire Features SupportFileDownloads' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportFileDownloads.php',
>         'Livewire Features SupportFileUploads' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportFileUploads.php',
>         'Livewire Features SupportLocales' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportLocales.php',
>         'Livewire Features SupportPostDeploymentInvalidation' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportPostDeploymentInvalidation.php',
>         'Livewire Features SupportRedirects' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportRedirects.php',
>         'Livewire Features SupportRootElementTracking' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportRootElementTracking.php',
>         'Livewire Features SupportStacks' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportStacks.php',
>         'Livewire Features SupportValidation' => __DIR__ . '/..' . '/livewire/livewire/src/Features/SupportValidation.php',
>         'Livewire FileUploadConfiguration' => __DIR__ . '/..' . '/livewire/livewire/src/FileUploadConfiguration.php',
>         'Livewire GenerateSignedUploadUrl' => __DIR__ . '/..' . '/livewire/livewire/src/GenerateSignedUploadUrl.php',
>         'Livewire HydrationMiddleware AddAttributesToRootTagOfHtml' => __DIR__ . '/..' . '/livewire/livewire/src/HydrationMiddleware/AddAttributesToRootTagOfHtml.php',
>         'Livewire HydrationMiddleware CallHydrationHooks' => __DIR__ . '/..' . '/livewire/livewire/src/HydrationMiddleware/CallHydrationHooks.php',
>         'Livewire HydrationMiddleware CallPropertyHydrationHooks' => __DIR__ . '/..' . '/livewire/livewire/src/HydrationMiddleware/CallPropertyHydrationHooks.php',
>         'Livewire HydrationMiddleware HashDataPropertiesForDirtyDetection' => __DIR__ . '/..' . '/livewire/livewire/src/HydrationMiddleware/HashDataPropertiesForDirtyDetection.php',
>         'Livewire HydrationMiddleware HydratePublicProperties' => __DIR__ . '/..' . '/livewire/livewire/src/HydrationMiddleware/HydratePublicProperties.php',
>         'Livewire HydrationMiddleware HydrationMiddleware' => __DIR__ . '/..' . '/livewire/livewire/src/HydrationMiddleware/HydrationMiddleware.php',
>         'Livewire HydrationMiddleware NormalizeComponentPropertiesForJavaScript' => __DIR__ . '/..' . '/livewire/livewire/src/HydrationMiddleware/NormalizeComponentPropertiesForJavaScript.php',
>         'Livewire HydrationMiddleware NormalizeDataForJavaScript' => __DIR__ . '/..' . '/livewire/livewire/src/HydrationMiddleware/NormalizeDataForJavaScript.php',
>         'Livewire HydrationMiddleware NormalizeServerMemoSansDataForJavaScript' => __DIR__ . '/..' . '/livewire/livewire/src/HydrationMiddleware/NormalizeServerMemoSansDataForJavaScript.php',
>         'Livewire HydrationMiddleware PerformActionCalls' => __DIR__ . '/..' . '/livewire/livewire/src/HydrationMiddleware/PerformActionCalls.php',
>         'Livewire HydrationMiddleware PerformDataBindingUpdates' => __DIR__ . '/..' . '/livewire/livewire/src/HydrationMiddleware/PerformDataBindingUpdates.php',
>         'Livewire HydrationMiddleware PerformEventEmissions' => __DIR__ . '/..' . '/livewire/livewire/src/HydrationMiddleware/PerformEventEmissions.php',
>         'Livewire HydrationMiddleware RenderView' => __DIR__ . '/..' . '/livewire/livewire/src/HydrationMiddleware/RenderView.php',
>         'Livewire HydrationMiddleware SecureHydrationWithChecksum' => __DIR__ . '/..' . '/livewire/livewire/src/HydrationMiddleware/SecureHydrationWithChecksum.php',
>         'Livewire ImplicitRouteBinding' => __DIR__ . '/..' . '/livewire/livewire/src/ImplicitRouteBinding.php',
>         'Livewire ImplicitlyBoundMethod' => __DIR__ . '/..' . '/livewire/livewire/src/ImplicitlyBoundMethod.php',
>         'Livewire LifecycleManager' => __DIR__ . '/..' . '/livewire/livewire/src/LifecycleManager.php',
>         'Livewire Livewire' => __DIR__ . '/..' . '/livewire/livewire/src/Livewire.php',
>         'Livewire LivewireBladeDirectives' => __DIR__ . '/..' . '/livewire/livewire/src/LivewireBladeDirectives.php',
>         'Livewire LivewireComponentsFinder' => __DIR__ . '/..' . '/livewire/livewire/src/LivewireComponentsFinder.php',
>         'Livewire LivewireManager' => __DIR__ . '/..' . '/livewire/livewire/src/LivewireManager.php',
>         'Livewire LivewireServiceProvider' => __DIR__ . '/..' . '/livewire/livewire/src/LivewireServiceProvider.php',
>         'Livewire LivewireTagCompiler' => __DIR__ . '/..' . '/livewire/livewire/src/LivewireTagCompiler.php',
>         'Livewire LivewireViewCompilerEngine' => __DIR__ . '/..' . '/livewire/livewire/src/LivewireViewCompilerEngine.php',
>         'Livewire Macros DuskBrowserMacros' => __DIR__ . '/..' . '/livewire/livewire/src/Macros/DuskBrowserMacros.php',
>         'Livewire Macros ViewMacros' => __DIR__ . '/..' . '/livewire/livewire/src/Macros/ViewMacros.php',
>         'Livewire ObjectPrybar' => __DIR__ . '/..' . '/livewire/livewire/src/ObjectPrybar.php',
>         'Livewire Redirector' => __DIR__ . '/..' . '/livewire/livewire/src/Redirector.php',
>         'Livewire Request' => __DIR__ . '/..' . '/livewire/livewire/src/Request.php',
>         'Livewire Response' => __DIR__ . '/..' . '/livewire/livewire/src/Response.php',
>         'Livewire TemporaryUploadedFile' => __DIR__ . '/..' . '/livewire/livewire/src/TemporaryUploadedFile.php',
>         'Livewire Testing Concerns HasFunLittleUtilities' => __DIR__ . '/..' . '/livewire/livewire/src/Testing/Concerns/HasFunLittleUtilities.php',
>         'Livewire Testing Concerns MakesAssertions' => __DIR__ . '/..' . '/livewire/livewire/src/Testing/Concerns/MakesAssertions.php',
>         'Livewire Testing Concerns MakesCallsToComponent' => __DIR__ . '/..' . '/livewire/livewire/src/Testing/Concerns/MakesCallsToComponent.php',
>         'Livewire Testing MakesHttpRequestsWrapper' => __DIR__ . '/..' . '/livewire/livewire/src/Testing/MakesHttpRequestsWrapper.php',
>         'Livewire Testing TestableLivewire' => __DIR__ . '/..' . '/livewire/livewire/src/Testing/TestableLivewire.php',
>         'Livewire WireDirective' => __DIR__ . '/..' . '/livewire/livewire/src/WireDirective.php',
>         'Livewire Wireable' => __DIR__ . '/..' . '/livewire/livewire/src/Wireable.php',
>         'Livewire WithFileUploads' => __DIR__ . '/..' . '/livewire/livewire/src/WithFileUploads.php',
>         'Livewire WithPagination' => __DIR__ . '/..' . '/livewire/livewire/src/WithPagination.php',

Changes

<         'Tightenco Ziggy BladeRouteGenerator' => __DIR__ . '/..' . '/tightenco/ziggy/src/BladeRouteGenerator.php',
<         'Tightenco Ziggy CommandRouteGenerator' => __DIR__ . '/..' . '/tightenco/ziggy/src/CommandRouteGenerator.php',
<         'Tightenco Ziggy Ziggy' => __DIR__ . '/..' . '/tightenco/ziggy/src/Ziggy.php',
<         'Tightenco Ziggy ZiggyServiceProvider' => __DIR__ . '/..' . '/tightenco/ziggy/src/ZiggyServiceProvider.php',

Changes

<             $loader->prefixLengthsPsr4 = ComposerStaticInit1a366ea8c9013f37377c59393191f427::$prefixLengthsPsr4;
<             $loader->prefixDirsPsr4 = ComposerStaticInit1a366ea8c9013f37377c59393191f427::$prefixDirsPsr4;
<             $loader->prefixesPsr0 = ComposerStaticInit1a366ea8c9013f37377c59393191f427::$prefixesPsr0;
<             $loader->classMap = ComposerStaticInit1a366ea8c9013f37377c59393191f427::$classMap;
---
>             $loader->prefixLengthsPsr4 = ComposerStaticInitf2da6e83b085fd96649a1eced6ba9cbb::$prefixLengthsPsr4;
>             $loader->prefixDirsPsr4 = ComposerStaticInitf2da6e83b085fd96649a1eced6ba9cbb::$prefixDirsPsr4;
>             $loader->prefixesPsr0 = ComposerStaticInitf2da6e83b085fd96649a1eced6ba9cbb::$prefixesPsr0;
>             $loader->classMap = ComposerStaticInitf2da6e83b085fd96649a1eced6ba9cbb::$classMap;
## vendor/composer/installed.json

Changes

<             "name": "inertiajs/inertia-laravel",
<             "version": "v0.5.2",
<             "version_normalized": "0.5.2.0",
<             "source": {
<                 "type": "git",
<                 "url": "https://github.com/inertiajs/inertia-laravel.git",
<                 "reference": "9c8c4201435aa0c11cb832242cf4c1b01bd8ef32"
<             },
<             "dist": {
<                 "type": "zip",
<                 "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/9c8c4201435aa0c11cb832242cf4c1b01bd8ef32",
<                 "reference": "9c8c4201435aa0c11cb832242cf4c1b01bd8ef32",
<                 "shasum": ""
<             },
<             "require": {
<                 "ext-json": "*",
<                 "laravel/framework": "^6.0|^7.0|^8.74|^9.0",
<                 "php": "^7.2|~8.0.0|~8.1.0"
<             },
<             "require-dev": {
<                 "mockery/mockery": "^1.3.3",
<                 "orchestra/testbench": "^4.0|^5.0|^6.4|^7.0",
<                 "phpunit/phpunit": "^8.0|^9.5.8",
<                 "roave/security-advisories": "dev-master"
<             },
<             "time": "2022-01-12T16:18:26+00:00",
<             "type": "library",
<             "extra": {
<                 "laravel": {
<                     "providers": [
<                         "Inertia ServiceProvider"
<                     ]
<                 }
<             },
<             "installation-source": "dist",
<             "autoload": {
<                 "psr-4": {
<                     "Inertia ": "src"
<                 },
<                 "files": [
<                     "./helpers.php"
<                 ]
<             },
<             "notification-url": "https://packagist.org/downloads/",
<             "license": [
<                 "MIT"
<             ],
<             "authors": [
<                 {
<                     "name": "Jonathan Reinink",
<                     "email": "jonathan@reinink.ca",
<                     "homepage": "https://reinink.ca"
<                 }
<             ],
<             "description": "The Laravel adapter for Inertia.js.",
<             "keywords": [
<                 "inertia",
<                 "laravel"
<             ],
<             "support": {
<                 "issues": "https://github.com/inertiajs/inertia-laravel/issues",
<                 "source": "https://github.com/inertiajs/inertia-laravel/tree/v0.5.2"
<             },
<             "funding": [
<                 {
<                     "url": "https://github.com/reinink",
<                     "type": "github"
<                 }
<             ],
<             "install-path": "../inertiajs/inertia-laravel"
<         },
<         {

Changes

>             "name": "livewire/livewire",
>             "version": "v2.9.0",
>             "version_normalized": "2.9.0.0",
>             "source": {
>                 "type": "git",
>                 "url": "https://github.com/livewire/livewire.git",
>                 "reference": "e117c78f9a4b19edb294b5b576138fd1f896925a"
>             },
>             "dist": {
>                 "type": "zip",
>                 "url": "https://api.github.com/repos/livewire/livewire/zipball/e117c78f9a4b19edb294b5b576138fd1f896925a",
>                 "reference": "e117c78f9a4b19edb294b5b576138fd1f896925a",
>                 "shasum": ""
>             },
>             "require": {
>                 "illuminate/database": "^7.0|^8.0",
>                 "illuminate/support": "^7.0|^8.0",
>                 "illuminate/validation": "^7.0|^8.0",
>                 "php": "^7.2.5|^8.0",
>                 "symfony/http-kernel": "^5.0"
>             },
>             "require-dev": {
>                 "calebporzio/sushi": "^2.1",
>                 "laravel/framework": "^7.0|^8.0",
>                 "mockery/mockery": "^1.3.1",
>                 "orchestra/testbench": "^5.0|^6.0",
>                 "orchestra/testbench-dusk": "^5.2|^6.0",
>                 "phpunit/phpunit": "^8.4|^9.0",
>                 "psy/psysh": "@stable"
>             },
>             "time": "2022-01-13T20:07:05+00:00",
>             "type": "library",
>             "extra": {
>                 "laravel": {
>                     "providers": [
>                         "Livewire LivewireServiceProvider"
>                     ],
>                     "aliases": {
>                         "Livewire": "Livewire Livewire"
>                     }
>                 }
>             },
>             "installation-source": "dist",
>             "autoload": {
>                 "files": [
>                     "src/helpers.php"
>                 ],
>                 "psr-4": {
>                     "Livewire ": "src/"
>                 }
>             },
>             "notification-url": "https://packagist.org/downloads/",
>             "license": [
>                 "MIT"
>             ],
>             "authors": [
>                 {
>                     "name": "Caleb Porzio",
>                     "email": "calebporzio@gmail.com"
>                 }
>             ],
>             "description": "A front-end framework for Laravel.",
>             "support": {
>                 "issues": "https://github.com/livewire/livewire/issues",
>                 "source": "https://github.com/livewire/livewire/tree/v2.9.0"
>             },
>             "funding": [
>                 {
>                     "url": "https://github.com/livewire",
>                     "type": "github"
>                 }
>             ],
>             "install-path": "../livewire/livewire"
>         },
>         {

Changes

<             "name": "tightenco/ziggy",
<             "version": "v1.4.2",
<             "version_normalized": "1.4.2.0",
<             "source": {
<                 "type": "git",
<                 "url": "https://github.com/tighten/ziggy.git",
<                 "reference": "620c135281062b9f6b53a75b07f99a4339267277"
<             },
<             "dist": {
<                 "type": "zip",
<                 "url": "https://api.github.com/repos/tighten/ziggy/zipball/620c135281062b9f6b53a75b07f99a4339267277",
<                 "reference": "620c135281062b9f6b53a75b07f99a4339267277",
<                 "shasum": ""
<             },
<             "require": {
<                 "laravel/framework": ">=5.4@dev"
<             },
<             "require-dev": {
<                 "orchestra/testbench": "^6.0",
<                 "phpunit/phpunit": "^9.2"
<             },
<             "time": "2021-10-01T13:55:26+00:00",
<             "type": "library",
<             "extra": {
<                 "laravel": {
<                     "providers": [
<                         "Tightenco Ziggy ZiggyServiceProvider"
<                     ]
<                 }
<             },
<             "installation-source": "dist",
<             "autoload": {
<                 "psr-4": {
<                     "Tightenco Ziggy ": "src/"
<                 }
<             },
<             "notification-url": "https://packagist.org/downloads/",
<             "license": [
<                 "MIT"
<             ],
<             "authors": [
<                 {
<                     "name": "Daniel Coulbourne",
<                     "email": "daniel@tighten.co"
<                 },
<                 {
<                     "name": "Jake Bathman",
<                     "email": "jake@tighten.co"
<                 },
<                 {
<                     "name": "Jacob Baker-Kretzmar",
<                     "email": "jacob@tighten.co"
<                 }
<             ],
<             "description": "Generates a Blade directive exporting all of your named Laravel routes. Also provides a nice route() helper function in JavaScript.",
<             "homepage": "https://github.com/tighten/ziggy",
<             "keywords": [
<                 "Ziggy",
<                 "javascript",
<                 "laravel",
<                 "routes"
<             ],
<             "support": {
<                 "issues": "https://github.com/tighten/ziggy/issues",
<                 "source": "https://github.com/tighten/ziggy/tree/v1.4.2"
<             },
<             "install-path": "../tightenco/ziggy"
<         },
<         {
## vendor/composer/installed.php

Changes

<         'inertiajs/inertia-laravel' => array(
<             'pretty_version' => 'v0.5.2',
<             'version' => '0.5.2.0',
<             'type' => 'library',
<             'install_path' => __DIR__ . '/../inertiajs/inertia-laravel',
<             'aliases' => array(),
<             'reference' => '9c8c4201435aa0c11cb832242cf4c1b01bd8ef32',
<             'dev_requirement' => false,
<         ),

Changes

>         'livewire/livewire' => array(
>             'pretty_version' => 'v2.9.0',
>             'version' => '2.9.0.0',
>             'type' => 'library',
>             'install_path' => __DIR__ . '/../livewire/livewire',
>             'aliases' => array(),
>             'reference' => 'e117c78f9a4b19edb294b5b576138fd1f896925a',
>             'dev_requirement' => false,
>         ),

Changes

<         'tightenco/ziggy' => array(
<             'pretty_version' => 'v1.4.2',
<             'version' => '1.4.2.0',
<             'type' => 'library',
<             'install_path' => __DIR__ . '/../tightenco/ziggy',
<             'aliases' => array(),
<             'reference' => '620c135281062b9f6b53a75b07f99a4339267277',
<             'dev_requirement' => false,
<         ),

## Only invendor: inertiajs

## Only inlaravel-starter-jetstream-livewire/vendor: livewire

## Only invendor: tightenco

## Only inlaravel-starter-jetstream-inertia: webpack.config.js

webpack.mix.js

Changes

< mix.js('resources/js/app.js', 'public/js').vue()
---
> mix.js('resources/js/app.js', 'public/js')

Changes

<     ])
<     .webpackConfig(require('./webpack.config'));
---
>     ]);
Laravel Toolbox

Laravel | Tipps und Tricks

Starter

Create Laravel Starter with basic functionalities

laravel new --jet --stack livewire --teams app

Views

Extend the file resources/views/navigation-menu.blade.php

<!-- Navigation Links -->
<div class="hidden space-x-8 sm:-my-px sm:ml-10 sm:flex">
   <x-jet-nav-link href="{{ route('dashboard') }}"
                   :active="request()->routeIs('dashboard')">
      { __('Dashboard') }}
   </x-jet-nav-link>
</div>

<div class="hidden space-x-8 sm:-my-px sm:ml-10 sm:flex">
   <x-jet-nav-link href="{{ route('particles') }}"
                   :active="request()->routeIs('particles')">
      {{ __('Particles') }}
   </x-jet-nav-link>
</div>

Display Laravel and PHP Version

<div>
    Laravel v{{ Illuminate\Foundation\Application::VERSION }}
    (PHP v{{ PHP_VERSION }})
</div>

Create new View and Component

php artisan make:component NewComponent

Creates

app/View/Components/NewComponent.php

and

resources/views/components/new-component.blade.php

Command Line

Create new command make:view

Original source is here

php artisan make:command MakeViewCommand

Create the following file

app/Console/Commands/MakeViewCommand.php

Edit the file and overwrite code with the following

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use File;

class MakeViewCommand extends Command
{
    protected $signature = 'make:view {view}';
    protected $description = 'Create a new blade template.';
    public function __construct()
    {
        parent::__construct();
    }

    public function handle()
    {
        $view = $this->argument('view');
        $path = $this->viewPath($view);

        $this->createDir($path);

        if (File::exists($path))
        {
            $this->error("File {$path} already exists!");
            return;
        }

        File::put($path, $path);

        $this->info("File {$path} created.");
    }

    public function viewPath($view)
    {
        $view = str_replace('.', '/', $view) . '.blade.php';

        return "resources/views/{$view}";
    }

    public function createDir($path)
    {
        $dir = dirname($path);

        if (!file_exists($dir))
        {
            mkdir($dir, 0777, true);
        }
    }

}

Database

SQLite

Create an empty SQLite Database

sqlite3 database.sqlite "create table t(f int); drop table t;"

https://laravel-news.com/ https://laravel-news.com/learning-laravel-in-2021 https://laravel.com/docs/8.x

https://laravel-livewire.com/screencasts/installation

https://www.larashout.com/

Tutorial

https://www.tutsmake.com/category/laravel-tutorial/ https://www.tutsmake.com/laravel-interview-questions-answers-for-1235-year-experience/ https://learn2torials.com/category/laravel

https://kinsta.com/blog/laravel-tutorial/#6-best-free-laravel-tutorial-sites

Database

https://eloquentbyexample.com

https://laravel.com/docs/8.x/eloquent#introduction

Blade

https://www.a-coding-project.de/ratgeber/laravel/blade

Blog erstellen

https://www.flowkl.com/tutorial/web-development/simple-blog-application-in-laravel-7/

https://www.section.io/engineering-education/laravel-beginners-guide-blogpost/

https://medium.com/@dinyangetoh/how-to-build-a-blog-with-laravel-9f735d1f3116

https://medium.com/@dinyangetoh/how-to-build-a-blog-with-laravel-9f735d1f3116