JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrregisterNamespaces(); $this->app->singleton( ModuleManifest::class, fn () => new ModuleManifest( new Filesystem(), app(Contracts\RepositoryInterface::class)->getScanPaths(), $this->getCachedModulePath(), app(ActivatorInterface::class) ) ); $this->registerModules(); $this->registerEvents(); AboutCommand::add('Laravel-Modules', [ 'Version' => fn () => InstalledVersions::getPrettyVersion('nwidart/laravel-modules'), ]); } /** * Register the service provider. */ public function register() { $this->registerServices(); $this->setupStubPath(); $this->registerProviders(); $this->registerMigrations(); $this->registerTranslations(); $this->mergeConfigFrom(__DIR__.'/../config/config.php', 'modules'); } /** * Setup stub path. */ public function setupStubPath() { $path = $this->app['config']->get('modules.stubs.path') ?? __DIR__.'/Commands/stubs'; Stub::setBasePath($path); $this->app->booted(function ($app) { /** @var RepositoryInterface $moduleRepository */ $moduleRepository = $app[RepositoryInterface::class]; if ($moduleRepository->config('stubs.enabled') === true) { Stub::setBasePath($moduleRepository->config('stubs.path')); } }); } /** * {@inheritdoc} */ protected function registerServices() { $this->app->singleton(Contracts\RepositoryInterface::class, function ($app) { $path = $app['config']->get('modules.paths.modules'); return new Laravel\LaravelFileRepository($app, $path); }); $this->app->singleton(Contracts\ActivatorInterface::class, function ($app) { $activator = $app['config']->get('modules.activator'); $class = $app['config']->get('modules.activators.'.$activator)['class']; if ($class === null) { throw InvalidActivatorClass::missingConfig(); } return new $class($app); }); $this->app->alias(Contracts\RepositoryInterface::class, 'modules'); } protected function registerMigrations(): void { if (! $this->app['config']->get('modules.auto-discover.migrations', true)) { return; } $this->app->resolving(Migrator::class, function (Migrator $migrator) { $migration_path = $this->app['config']->get('modules.paths.generator.migration.path'); collect(\Nwidart\Modules\Facades\Module::allEnabled()) ->each(function (\Nwidart\Modules\Laravel\Module $module) use ($migration_path, $migrator) { $migrator->path($module->getExtraPath($migration_path)); }); }); } protected function registerTranslations(): void { if (! $this->app['config']->get('modules.auto-discover.translations', true)) { return; } $this->callAfterResolving('translator', function (TranslatorContract $translator) { if (! $translator instanceof Translator) { return; } collect(\Nwidart\Modules\Facades\Module::allEnabled()) ->each(function (\Nwidart\Modules\Laravel\Module $module) use ($translator) { $path = $module->getExtraPath($this->app['config']->get('modules.paths.generator.lang.path')); $translator->addNamespace($module->getLowerName(), $path); $translator->addJsonPath($path); }); }); } private function registerEvents(): void { Event::listen( [ 'modules.*.'.ModuleEvent::DELETED, 'modules.*.'.ModuleEvent::CREATED, 'modules.*.'.ModuleEvent::DISABLED, 'modules.*.'.ModuleEvent::ENABLED, ], fn () => Artisan::call('module:clear-compiled', outputBuffer: new NullOutput) ); } }