group('web', [ EncryptCookies::class, AddQueuedCookiesToResponse::class, StartSession::class, ResilientSession::class, ShareErrorsFromSession::class, ValidateCsrfToken::class, SubstituteBindings::class, SecurityHeaders::class, FindDomainRecord::class, ]); } /** * Register services. */ public function register(): void { // Alias 'admin' to Livewire manager for Flux package compatibility // The Flux fork uses app('admin') where standard Flux uses app('livewire') $this->app->alias('livewire', 'admin'); } /** * Bootstrap services. */ public function boot(): void { // Register web:: namespace for public workspace pages (home, waitlist, page) $this->loadViewsFrom(dirname(__DIR__).'/Components/View/Blade/web', 'web'); // Register web:: anonymous components Blade::anonymousComponentPath(__DIR__.'/Blade', 'web'); Blade::anonymousComponentPath(__DIR__.'/Blade/components', 'web'); // Register tag compiler (like ) $this->bootTagCompiler(); // Fire WebRoutesRegistering after app is booted (Livewire routes need to exist first) $this->app->booted(function () { LifecycleEventProvider::fireWebRoutes(); }); } /** * Register the custom tag compiler. */ protected function bootTagCompiler(): void { $compiler = new WebTagCompiler( app('blade.compiler')->getClassComponentAliases(), app('blade.compiler')->getClassComponentNamespaces(), app('blade.compiler') ); app('blade.compiler')->precompiler(function (string $value) use ($compiler) { return $compiler->compile($value); }); } }