消える飛行機雲 僕たちは見送った 眩しくて逃げた いつだって弱くて あの日から変わらず いつまでも変わらずに いられなかったこと 悔しくて指を離す あの鳥は まだ うまく飛べないけど いつかは 風を切って知る 届かない場所が まだ遠くにある 願いだけ秘めて 見つめてる 子供たちは 夏の線路 歩く 吹く風に素足をさらして 遠くには幼かった日びを 両手には 飛び立つ希望を 消える飛行機雲 追いかけて 追いかけて この丘を越えた あの日から変わらず いつまでも 真っ直ぐに 僕たちはあるように わたつみのような 強さを守れるよ きっと ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!recaptcha.php000064400000011710152244040070007205 0ustar00 env('RECAPTCHA_SITE_KEY', ''), /** * * The secret key * get secret key @ www.google.com/recaptcha/admin * */ 'api_secret_key' => env('RECAPTCHA_SECRET_KEY', ''), /** * * ReCATCHA version * Supported: "v2", "invisible", "v3", * * get more info @ https://developers.google.com/recaptcha/docs/versions * */ 'version' => 'v2', /** * * The curl timout in seconds to validate a recaptcha token * @since v3.5.0 * */ 'curl_timeout' => 10, /** * * IP addresses for which validation will be skipped * IP/CIDR netmask eg. 127.0.0.0/24, also 127.0.0.1 is accepted and /32 assumed * */ 'skip_ip' => env('RECAPTCHA_SKIP_IP', []), /** * * Default route called to check the Google reCAPTCHA token * @since v3.2.0 * */ 'default_validation_route' => 'biscolab-recaptcha/validate', /** * * The name of the parameter used to send Google reCAPTCHA token to verify route * @since v3.2.0 * */ 'default_token_parameter_name' => 'g-recaptcha-response', /** * * The default Google reCAPTCHA language code * It has no effect with v3 * @see https://developers.google.com/recaptcha/docs/language * @since v3.6.0 * */ 'default_language' => null, /** * * The default form ID. Only for "invisible" reCAPTCHA * @since v4.0.0 * */ 'default_form_id' => 'biscolab-recaptcha-invisible-form', /** * * Deferring the render can be achieved by specifying your onload callback function and adding parameters to the JavaScript resource. * It has no effect with v3 and invisible * @see https://developers.google.com/recaptcha/docs/display#explicit_render * @since v4.0.0 * Supported true, false * */ 'explicit' => false, /** * * Set API domain. You can use "www.recaptcha.net" in case "www.google.com" is not accessible. * (no check will be made on the entered value) * @see https://developers.google.com/recaptcha/docs/faq#can-i-use-recaptcha-globally * @since v4.3.0 * Default 'www.google.com' (ReCaptchaBuilder::DEFAULT_RECAPTCHA_API_DOMAIN) * */ 'api_domain' => 'www.google.com', /** * * Set `true` when the error message must be null * @since v5.1.0 * Default false * */ 'empty_message' => false, /** * * Set either the error message or the errom message translation key * @since v5.1.0 * Default 'validation.recaptcha' * */ 'error_message_key' => 'validation.recaptcha', /** * * g-recaptcha tag attributes and grecaptcha.render parameters (v2 only) * @see https://developers.google.com/recaptcha/docs/display#render_param * @since v4.0.0 */ 'tag_attributes' => [ /** * The color theme of the widget. * Supported "light", "dark" */ 'theme' => 'light', /** * The size of the widget. * Supported "normal", "compact" */ 'size' => 'normal', /** * The tabindex of the widget and challenge. * If other elements in your page use tabindex, it should be set to make user navigation easier. */ 'tabindex' => 0, /** * The name of your callback function, executed when the user submits a successful response. * The g-recaptcha-response token is passed to your callback. * DO NOT SET "biscolabOnloadCallback" */ 'callback' => null, /** * The name of your callback function, executed when the reCAPTCHA response expires and the user needs to re-verify. * DO NOT SET "biscolabOnloadCallback" */ 'expired-callback' => null, /** * The name of your callback function, executed when reCAPTCHA encounters an error (usually network connectivity) and cannot continue until connectivity is restored. * If you specify a function here, you are responsible for informing the user that they should retry. * DO NOT SET "biscolabOnloadCallback" */ 'error-callback' => null, ] ]; filesystems.php000064400000004627152244040070007633 0ustar00 env('FILESYSTEM_DISK', 'local'), /* |-------------------------------------------------------------------------- | Filesystem Disks |-------------------------------------------------------------------------- | | Here you may configure as many filesystem "disks" as you wish, and you | may even configure multiple disks of the same driver. Defaults have | been set up for each driver as an example of the required values. | | Supported Drivers: "local", "ftp", "sftp", "s3" | */ 'disks' => [ 'local' => [ 'driver' => 'local', 'root' => public_path('uploads'), 'url' => env('APP_URL').'/uploads', 'throw' => false, ], 'public' => [ 'driver' => 'local', 'root' => public_path('uploads'), 'url' => env('APP_URL').'/uploads', 'visibility' => 'public', 'throw' => false, ], 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), 'url' => env('AWS_URL'), 'endpoint' => env('AWS_ENDPOINT'), 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), 'visibility' => 'public', 'throw' => false, ], ], /* |-------------------------------------------------------------------------- | Symbolic Links |-------------------------------------------------------------------------- | | Here you may configure the symbolic links that will be created when the | `storage:link` Artisan command is executed. The array keys should be | the locations of the links and the values should be their targets. | */ 'links' => [ public_path('storage') => storage_path('app/public'), ], ]; sitemap.php000064400000003015152244040070006714 0ustar00 [ /* * Whether or not cookies are used in a request. */ RequestOptions::COOKIES => true, /* * The number of seconds to wait while trying to connect to a server. * Use 0 to wait indefinitely. */ RequestOptions::CONNECT_TIMEOUT => 10, /* * The timeout of the request in seconds. Use 0 to wait indefinitely. */ RequestOptions::TIMEOUT => 10, /* * Describes the redirect behavior of a request. */ RequestOptions::ALLOW_REDIRECTS => false, ], /* * The sitemap generator can execute JavaScript on each page so it will * discover links that are generated by your JS scripts. This feature * is powered by headless Chrome. */ 'execute_javascript' => false, /* * The package will make an educated guess as to where Google Chrome is installed. * You can also manually pass its location here. */ 'chrome_binary_path' => null, /* * The sitemap generator uses a CrawlProfile implementation to determine * which urls should be crawled for the sitemap. */ 'crawl_profile' => Profile::class, ]; paystack.php000064400000001310152244040070007065 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ return [ /** * Public Key From Paystack Dashboard * */ 'publicKey' => env('PAYSTACK_PUBLIC_KEY'), /** * Secret Key From Paystack Dashboard * */ 'secretKey' => env('PAYSTACK_SECRET_KEY'), /** * Paystack Payment URL * */ 'paymentUrl' => env('PAYSTACK_PAYMENT_URL'), /** * Optional email address of the merchant * */ 'merchantEmail' => env('MERCHANT_EMAIL'), ]; livewire-tables.php000064400000005607152244040070010361 0ustar00 'bootstrap-5', /** * Filter Frontend Asset Options */ /** * Cache Rappasoft Frontend Assets */ 'cache_assets' => false, /** * Enable or Disable automatic injection of core assets */ 'inject_core_assets_enabled' => false, /** * Enable or Disable automatic injection of third-party assets */ 'inject_third_party_assets_enabled' => false, /** * Enable Blade Directives (Not required if automatically injecting or using bundler approaches) */ 'enable_blade_directives' => false, /** * Customise Script & Styles Paths */ 'script_base_path' => '/rappasoft/laravel-livewire-tables', /** * Filter Default Configuration Options * * */ /** * Configuration options for DateFilter */ 'dateFilter' => [ 'defaultConfig' => [ 'format' => 'Y-m-d', 'pillFormat' => 'd M Y', // Used to display in the Filter Pills ], ], /** * Configuration options for DateTimeFilter */ 'dateTimeFilter' => [ 'defaultConfig' => [ 'format' => 'Y-m-d\TH:i', 'pillFormat' => 'd M Y - H:i', // Used to display in the Filter Pills ], ], /** * Configuration options for DateRangeFilter */ 'dateRange' => [ 'defaultOptions' => [], 'defaultConfig' => [ 'allowInput' => true, // Allow manual input of dates 'altFormat' => 'F j, Y', // Date format that will be displayed once selected 'ariaDateFormat' => 'F j, Y', // An aria-friendly date format 'dateFormat' => 'Y-m-d', // Date format that will be received by the filter 'earliestDate' => null, // The earliest acceptable date 'latestDate' => null, // The latest acceptable date ], ], /** * Configuration options for NumberRangeFilter */ 'numberRange' => [ 'defaultOptions' => [ 'min' => 0, // The default start value 'max' => 100, // The default end value ], 'defaultConfig' => [ 'minRange' => 0, // The minimum possible value 'maxRange' => 100, // The maximum possible value 'suffix' => '', // A suffix to append to the values when displayed ], ], /** * Configuration options for SelectFilter */ 'selectFilter' => [ 'defaultOptions' => [], 'defaultConfig' => [], ], /** * Configuration options for MultiSelectFilter */ 'multiSelectFilter' => [ 'defaultOptions' => [], 'defaultConfig' => [], ], /** * Configuration options for MultiSelectFilter */ 'multiSelectDropdownFilter' => [ 'defaultOptions' => [], 'defaultConfig' => [], ], ]; hashing.php000064400000003044152244040070006675 0ustar00 'bcrypt', /* |-------------------------------------------------------------------------- | Bcrypt Options |-------------------------------------------------------------------------- | | Here you may specify the configuration options that should be used when | passwords are hashed using the Bcrypt algorithm. This will allow you | to control the amount of time it takes to hash the given password. | */ 'bcrypt' => [ 'rounds' => env('BCRYPT_ROUNDS', 10), ], /* |-------------------------------------------------------------------------- | Argon Options |-------------------------------------------------------------------------- | | Here you may specify the configuration options that should be used when | passwords are hashed using the Argon algorithm. These will allow you | to control the amount of time it takes to hash the given password. | */ 'argon' => [ 'memory' => 65536, 'threads' => 1, 'time' => 4, ], ]; modules.php000064400000021453152244040070006730 0ustar00 'Modules', /* |-------------------------------------------------------------------------- | Module Stubs |-------------------------------------------------------------------------- | | Default module stubs. | */ 'stubs' => [ 'enabled' => false, 'path' => base_path('vendor/nwidart/laravel-modules/src/Commands/stubs'), 'files' => [ 'routes/web' => 'routes/web.php', 'routes/api' => 'routes/api.php', 'views/index' => 'resources/views/index.blade.php', 'views/master' => 'resources/views/layouts/master.blade.php', 'scaffold/config' => 'config/config.php', 'composer' => 'composer.json', 'assets/js/app' => 'resources/assets/js/app.js', 'assets/sass/app' => 'resources/assets/sass/app.scss', 'vite' => 'vite.config.js', 'package' => 'package.json', ], 'replacements' => [ 'routes/web' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE', 'CONTROLLER_NAMESPACE'], 'routes/api' => ['LOWER_NAME', 'STUDLY_NAME'], 'vite' => ['LOWER_NAME'], 'json' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE', 'PROVIDER_NAMESPACE'], 'views/index' => ['LOWER_NAME'], 'views/master' => ['LOWER_NAME', 'STUDLY_NAME'], 'scaffold/config' => ['STUDLY_NAME'], 'composer' => [ 'LOWER_NAME', 'STUDLY_NAME', 'VENDOR', 'AUTHOR_NAME', 'AUTHOR_EMAIL', 'MODULE_NAMESPACE', 'PROVIDER_NAMESPACE', ], ], 'gitkeep' => true, ], 'paths' => [ /* |-------------------------------------------------------------------------- | Modules path |-------------------------------------------------------------------------- | | This path is used to save the generated module. | This path will also be added automatically to the list of scanned folders. | */ 'modules' => base_path('Modules'), /* |-------------------------------------------------------------------------- | Modules assets path |-------------------------------------------------------------------------- | | Here you may update the modules' assets path. | */ 'assets' => public_path('modules'), /* |-------------------------------------------------------------------------- | The migrations' path |-------------------------------------------------------------------------- | | Where you run the 'module:publish-migration' command, where do you publish the | the migration files? | */ 'migration' => base_path('database/migrations'), /* |-------------------------------------------------------------------------- | Generator path |-------------------------------------------------------------------------- | Customise the paths where the folders will be generated. | Setting the generate key to false will not generate that folder */ 'generator' => [ 'config' => ['path' => 'config', 'generate' => true], 'command' => ['path' => 'App/Console', 'generate' => false], 'channels' => ['path' => 'App/Broadcasting', 'generate' => false], 'migration' => ['path' => 'Database/migrations', 'generate' => false], 'seeder' => ['path' => 'Database/Seeders', 'generate' => true], 'factory' => ['path' => 'Database/Factories', 'generate' => false], 'model' => ['path' => 'App/Models', 'generate' => false], 'observer' => ['path' => 'App/Observers', 'generate' => false], 'routes' => ['path' => 'routes', 'generate' => true], 'controller' => ['path' => 'App/Http/Controllers', 'generate' => true], 'filter' => ['path' => 'App/Http/Middleware', 'generate' => false], 'request' => ['path' => 'App/Http/Requests', 'generate' => false], 'provider' => ['path' => 'App/Providers', 'generate' => true], 'assets' => ['path' => 'resources/assets', 'generate' => false], 'lang' => ['path' => 'lang', 'generate' => false], 'views' => ['path' => 'resources/views', 'generate' => true], 'test' => ['path' => 'tests/Unit', 'generate' => false], 'test-feature' => ['path' => 'tests/Feature', 'generate' => false], 'repository' => ['path' => 'App/Repositories', 'generate' => false], 'event' => ['path' => 'App/Events', 'generate' => false], 'listener' => ['path' => 'App/Listeners', 'generate' => false], 'policies' => ['path' => 'App/Policies', 'generate' => false], 'rules' => ['path' => 'App/Rules', 'generate' => false], 'jobs' => ['path' => 'App/Jobs', 'generate' => false], 'emails' => ['path' => 'App/Emails', 'generate' => false], 'notifications' => ['path' => 'App/Notifications', 'generate' => false], 'resource' => ['path' => 'App/resources', 'generate' => false], 'component-view' => ['path' => 'resources/views/components', 'generate' => false], 'component-class' => ['path' => 'App/View/Components', 'generate' => false], ], ], /* |-------------------------------------------------------------------------- | Package commands |-------------------------------------------------------------------------- | | Here you can define which commands will be visible and used in your | application. You can add your own commands to merge section. | */ 'commands' => ConsoleServiceProvider::defaultCommands() ->merge([ // New commands go here ])->toArray(), /* |-------------------------------------------------------------------------- | Scan Path |-------------------------------------------------------------------------- | | Here you define which folder will be scanned. By default will scan vendor | directory. This is useful if you host the package in packagist website. | */ 'scan' => [ 'enabled' => false, 'paths' => [ base_path('vendor/*/*'), ], ], /* |-------------------------------------------------------------------------- | Composer File Template |-------------------------------------------------------------------------- | | Here is the config for the composer.json file, generated by this package | */ 'composer' => [ 'vendor' => 'nwidart', 'author' => [ 'name' => 'Nicolas Widart', 'email' => 'n.widart@gmail.com', ], 'composer-output' => false, ], /* |-------------------------------------------------------------------------- | Caching |-------------------------------------------------------------------------- | | Here is the config for setting up the caching feature. | */ 'cache' => [ 'enabled' => false, 'driver' => 'file', 'key' => 'laravel-modules', 'lifetime' => 60, ], /* |-------------------------------------------------------------------------- | Choose what laravel-modules will register as custom namespaces. | Setting one to false will require you to register that part | in your own Service Provider class. |-------------------------------------------------------------------------- */ 'register' => [ 'translations' => true, /** * load files on boot or register method */ 'files' => 'register', ], /* |-------------------------------------------------------------------------- | Activators |-------------------------------------------------------------------------- | | You can define new types of activators here, file, database, etc. The only | required parameter is 'class'. | The file activator will store the activation status in storage/installed_modules */ 'activators' => [ 'file' => [ 'class' => FileActivator::class, 'statuses-file' => base_path('modules_statuses.json'), 'cache-key' => 'activator.installed', 'cache-lifetime' => 604800, ], ], 'activator' => 'file', ]; broadcasting.php000064400000004143152244040070007715 0ustar00 env('BROADCAST_DRIVER', 'null'), /* |-------------------------------------------------------------------------- | Broadcast Connections |-------------------------------------------------------------------------- | | Here you may define all of the broadcast connections that will be used | to broadcast events to other systems or over websockets. Samples of | each available type of connection are provided inside this array. | */ 'connections' => [ 'pusher' => [ 'driver' => 'pusher', 'key' => env('PUSHER_APP_KEY'), 'secret' => env('PUSHER_APP_SECRET'), 'app_id' => env('PUSHER_APP_ID'), 'options' => [ 'cluster' => env('PUSHER_APP_CLUSTER'), 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', 'port' => env('PUSHER_PORT', 443), 'scheme' => env('PUSHER_SCHEME', 'https'), 'encrypted' => true, 'useTLS' => env('PUSHER_SCHEME', 'https') === 'https', ], 'client_options' => [ // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html ], ], 'ably' => [ 'driver' => 'ably', 'key' => env('ABLY_KEY'), ], 'redis' => [ 'driver' => 'redis', 'connection' => 'default', ], 'log' => [ 'driver' => 'log', ], 'null' => [ 'driver' => 'null', ], ], ]; app.php000064400000025171152244040070006041 0ustar00 env('APP_NAME', 'Laravel'), /* |-------------------------------------------------------------------------- | Application Environment |-------------------------------------------------------------------------- | | This value determines the "environment" your application is currently | running in. This may determine how you prefer to configure various | services the application utilizes. Set this in your ".env" file. | */ 'env' => env('APP_ENV', 'production'), /* |-------------------------------------------------------------------------- | Application Debug Mode |-------------------------------------------------------------------------- | | When your application is in debug mode, detailed error messages with | stack traces will be shown on every error that occurs within your | application. If disabled, a simple generic error page is shown. | */ 'debug' => (bool) env('APP_DEBUG', false), /* |-------------------------------------------------------------------------- | Application URL |-------------------------------------------------------------------------- | | This URL is used by the console to properly generate URLs when using | the Artisan command line tool. You should set this to the root of | your application so that it is used when running Artisan tasks. | */ 'url' => env('APP_URL', 'http://localhost'), 'media_disc' => env('MEDIA_DISK', 'public'), 'asset_url' => env('ASSET_URL', null), 'google_client_id' => env('GOOGLE_CLIENT_ID'), 'google_client_secret' => env('GOOGLE_CLIENT_SECRET'), 'google_redirect' => env('GOOGLE_REDIRECT'), 'facebook_app_id' => env('FACEBOOK_APP_ID'), 'facebook_app_secret' => env('FACEBOOK_APP_SECRET'), 'facebook_redirect' => env('FACEBOOK_REDIRECT'), 'upgrade_mode' => env('UPGRADE_MODE'), 'mail_admin' => env('MAIL_ADMIN'), 'one_signal_app_id' => env('ONESIGNAL_APP_ID'), 'mail_host' => env('MAIL_HOST'), 'mail_port' => env('MAIL_PORT'), 'mail_username' => env('MAIL_USERNAME'), 'mail_password' => env('MAIL_PASSWORD'), 'mail_encryption' => env('MAIL_ENCRYPTION'), 'mail_from_address' => env('MAIL_FROM_ADDRESS'), /* |-------------------------------------------------------------------------- | Application Timezone |-------------------------------------------------------------------------- | | Here you may specify the default timezone for your application, which | will be used by the PHP date and date-time functions. We have gone | ahead and set this to a sensible default for you out of the box. | */ 'timezone' => env('APP_TIMEZONE', 'UTC'), /* |-------------------------------------------------------------------------- | Application Locale Configuration |-------------------------------------------------------------------------- | | The application locale determines the default locale that will be used | by the translation service provider. You are free to set this value | to any of the locales which will be supported by the application. | */ 'locale' => 'en', /* |-------------------------------------------------------------------------- | Application Fallback Locale |-------------------------------------------------------------------------- | | The fallback locale determines the locale to use when the current one | is not available. You may change the value to correspond to any of | the language folders that are provided through your application. | */ 'fallback_locale' => 'en', /* |-------------------------------------------------------------------------- | Faker Locale |-------------------------------------------------------------------------- | | This locale will be used by the Faker PHP library when generating fake | data for your database seeds. For example, this will be used to get | localized telephone numbers, street address information and more. | */ 'faker_locale' => 'en_US', /* |-------------------------------------------------------------------------- | Encryption Key |-------------------------------------------------------------------------- | | This key is used by the Illuminate encrypter service and should be set | to a random, 32 character string, otherwise these encrypted strings | will not be safe. Please do this before deploying an application! | */ 'key' => env('APP_KEY'), 'cipher' => 'AES-256-CBC', /* |-------------------------------------------------------------------------- | Maintenance Mode Driver |-------------------------------------------------------------------------- | | These configuration options determine the driver used to determine and | manage Laravel's "maintenance mode" status. The "cache" driver will | allow maintenance mode to be controlled across multiple machines. | | Supported drivers: "file", "cache" | */ 'maintenance' => [ 'driver' => 'file', // 'store' => 'redis', ], /* |-------------------------------------------------------------------------- | Autoloaded Service Providers |-------------------------------------------------------------------------- | | The service providers listed here will be automatically loaded on the | request to your application. Feel free to add your own services to | this array to grant expanded functionality to your applications. | */ 'providers' => ServiceProvider::defaultProviders()->merge([ Spatie\Permission\PermissionServiceProvider::class, LaravelQRCode\Providers\QRCodeServiceProvider::class, Biscolab\ReCaptcha\ReCaptchaServiceProvider::class, Unicodeveloper\Paystack\PaystackServiceProvider::class, Berkayk\OneSignal\OneSignalServiceProvider::class, InstallerErag\InstallerServiceProvider::class, /* * Package Service Providers... */ Barryvdh\Debugbar\ServiceProvider::class, Lab404\Impersonate\ImpersonateServiceProvider::class, KingFlamez\Rave\RaveServiceProvider::class, /* * Application Service Providers... */ App\Providers\AppServiceProvider::class, App\Providers\AuthServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, App\Providers\TenancyServiceProvider::class, Mariuzzo\LaravelJsLocalization\LaravelJsLocalizationServiceProvider::class, Rap2hpoutre\LaravelLogViewer\LaravelLogViewerServiceProvider::class, ])->toArray(), /* |-------------------------------------------------------------------------- | Class Aliases |-------------------------------------------------------------------------- | | This array of class aliases will be registered when this application | is started. However, feel free to register as many as you wish as | the aliases are "lazy" loaded so they don't hinder performance. | */ // 'aliases' => Facade::defaultAliases()->merge([ // 'Datatables' => \Yajra\DataTables\Facades\DataTables::class, // 'Debugbar' => Barryvdh\Debugbar\Facade::class, // ])->toArray(), 'aliases' => [ 'App' => Illuminate\Support\Facades\App::class, 'Arr' => Illuminate\Support\Arr::class, 'Artisan' => Illuminate\Support\Facades\Artisan::class, 'Auth' => Illuminate\Support\Facades\Auth::class, 'Blade' => Illuminate\Support\Facades\Blade::class, 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, 'Bus' => Illuminate\Support\Facades\Bus::class, 'Cache' => Illuminate\Support\Facades\Cache::class, 'Config' => Illuminate\Support\Facades\Config::class, 'Cookie' => Illuminate\Support\Facades\Cookie::class, 'Crypt' => Illuminate\Support\Facades\Crypt::class, 'Date' => Illuminate\Support\Facades\Date::class, 'DB' => Illuminate\Support\Facades\DB::class, 'Eloquent' => Illuminate\Database\Eloquent\Model::class, 'Event' => Illuminate\Support\Facades\Event::class, 'File' => Illuminate\Support\Facades\File::class, 'Gate' => Illuminate\Support\Facades\Gate::class, 'Hash' => Illuminate\Support\Facades\Hash::class, 'Http' => Illuminate\Support\Facades\Http::class, 'Js' => Illuminate\Support\Js::class, 'Lang' => Illuminate\Support\Facades\Lang::class, 'Log' => Illuminate\Support\Facades\Log::class, 'Mail' => Illuminate\Support\Facades\Mail::class, 'Notification' => Illuminate\Support\Facades\Notification::class, 'Password' => Illuminate\Support\Facades\Password::class, 'Queue' => Illuminate\Support\Facades\Queue::class, 'RateLimiter' => Illuminate\Support\Facades\RateLimiter::class, 'Redirect' => Illuminate\Support\Facades\Redirect::class, // 'Redis' => Illuminate\Support\Facades\Redis::class, 'Request' => Illuminate\Support\Facades\Request::class, 'Response' => Illuminate\Support\Facades\Response::class, 'Route' => Illuminate\Support\Facades\Route::class, 'Schema' => Illuminate\Support\Facades\Schema::class, 'Session' => Illuminate\Support\Facades\Session::class, 'Storage' => Illuminate\Support\Facades\Storage::class, 'Str' => Illuminate\Support\Str::class, 'URL' => Illuminate\Support\Facades\URL::class, 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, // 'QRCode' => LaravelQRCode\Facades\QRCode::class, //'QRCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class, 'ReCaptcha' => Biscolab\ReCaptcha\Facades\ReCaptcha::class, 'Paystack' => Unicodeveloper\Paystack\Facades\Paystack::class, 'LaravelPwa' => \Ladumor\LaravelPwa\LaravelPwa::class, 'OneSignal' => Berkayk\OneSignal\OneSignalFacade::class, 'Rave' => KingFlamez\Rave\Facades\Rave::class, ], ]; permission.php000064400000012714152244040070007450 0ustar00 [ /* * When using the "HasPermissions" trait from this package, we need to know which * Eloquent model should be used to retrieve your permissions. Of course, it * is often just the "Permission" model but you may use whatever you like. * * The model you want to use as a Permission model needs to implement the * `Spatie\Permission\Contracts\Permission` contract. */ 'permission' => Spatie\Permission\Models\Permission::class, /* * When using the "HasRoles" trait from this package, we need to know which * Eloquent model should be used to retrieve your roles. Of course, it * is often just the "Role" model but you may use whatever you like. * * The model you want to use as a Role model needs to implement the * `Spatie\Permission\Contracts\Role` contract. */ 'role' => Spatie\Permission\Models\Role::class, ], 'table_names' => [ /* * When using the "HasRoles" trait from this package, we need to know which * table should be used to retrieve your roles. We have chosen a basic * default value but you may easily change it to any table you like. */ 'roles' => 'roles', /* * When using the "HasPermissions" trait from this package, we need to know which * table should be used to retrieve your permissions. We have chosen a basic * default value but you may easily change it to any table you like. */ 'permissions' => 'permissions', /* * When using the "HasPermissions" trait from this package, we need to know which * table should be used to retrieve your models permissions. We have chosen a * basic default value but you may easily change it to any table you like. */ 'model_has_permissions' => 'model_has_permissions', /* * When using the "HasRoles" trait from this package, we need to know which * table should be used to retrieve your models roles. We have chosen a * basic default value but you may easily change it to any table you like. */ 'model_has_roles' => 'model_has_roles', /* * When using the "HasRoles" trait from this package, we need to know which * table should be used to retrieve your roles permissions. We have chosen a * basic default value but you may easily change it to any table you like. */ 'role_has_permissions' => 'role_has_permissions', ], 'column_names' => [ /* * Change this if you want to name the related pivots other than defaults */ 'role_pivot_key' => null, //default 'role_id', 'permission_pivot_key' => null, //default 'permission_id', /* * Change this if you want to name the related model primary key other than * `model_id`. * * For example, this would be nice if your primary keys are all UUIDs. In * that case, name this `model_uuid`. */ 'model_morph_key' => 'model_id', /* * Change this if you want to use the teams feature and your related model's * foreign key is other than `team_id`. */ 'team_foreign_key' => 'team_id', ], /* * When set to true, the method for checking permissions will be registered on the gate. * Set this to false, if you want to implement custom logic for checking permissions. */ 'register_permission_check_method' => true, /* * When set to true the package implements teams using the 'team_foreign_key'. If you want * the migrations to register the 'team_foreign_key', you must set this to true * before doing the migration. If you already did the migration then you must make a new * migration to also add 'team_foreign_key' to 'roles', 'model_has_roles', and * 'model_has_permissions'(view the latest version of package's migration file) */ 'teams' => false, /* * When set to true, the required permission names are added to the exception * message. This could be considered an information leak in some contexts, so * the default setting is false here for optimum safety. */ 'display_permission_in_exception' => false, /* * When set to true, the required role names are added to the exception * message. This could be considered an information leak in some contexts, so * the default setting is false here for optimum safety. */ 'display_role_in_exception' => false, /* * By default wildcard permission lookups are disabled. */ 'enable_wildcard_permission' => false, 'cache' => [ /* * By default all permissions are cached for 24 hours to speed up performance. * When permissions or roles are updated the cache is flushed automatically. */ 'expiration_time' => \DateInterval::createFromDateString('24 hours'), /* * The cache key used to store all permissions. */ 'key' => 'spatie.permission.cache', /* * You may optionally indicate a specific cache driver to use for permission and * role caching using any of the `store` drivers listed in the cache.php config * file. Using 'default' here means to use the `default` set in cache.php. */ 'store' => 'default', ], ]; database.php000064400000012252152244040070007021 0ustar00 env('DB_CONNECTION', 'mysql'), /* |-------------------------------------------------------------------------- | Database Connections |-------------------------------------------------------------------------- | | Here are each of the database connections setup for your application. | Of course, examples of configuring each database platform that is | supported by Laravel is shown below to make development simple. | | | All database work in Laravel is done through the PHP PDO facilities | so make sure you have the driver for your particular database of | choice installed on your machine before you begin development. | */ 'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'url' => env('DATABASE_URL'), 'database' => env('DB_DATABASE', database_path('database.sqlite')), 'prefix' => '', 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), ], 'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => false, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ], 'pgsql' => [ 'driver' => 'pgsql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '5432'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, 'search_path' => 'public', 'sslmode' => 'prefer', ], 'sqlsrv' => [ 'driver' => 'sqlsrv', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '1433'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, // 'encrypt' => env('DB_ENCRYPT', 'yes'), // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), ], ], /* |-------------------------------------------------------------------------- | Migration Repository Table |-------------------------------------------------------------------------- | | This table keeps track of all the migrations that have already run for | your application. Using this information, we can determine which of | the migrations on disk haven't actually been run in the database. | */ 'migrations' => 'migrations', /* |-------------------------------------------------------------------------- | Redis Databases |-------------------------------------------------------------------------- | | Redis is an open source, fast, and advanced key-value store that also | provides a richer body of commands than a typical key-value system | such as APC or Memcached. Laravel makes it easy to dig right in. | */ 'redis' => [ 'client' => env('REDIS_CLIENT', 'phpredis'), 'options' => [ 'cluster' => env('REDIS_CLUSTER', 'redis'), 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), ], 'default' => [ 'url' => env('REDIS_URL'), 'host' => env('REDIS_HOST', '127.0.0.1'), 'username' => env('REDIS_USERNAME'), 'password' => env('REDIS_PASSWORD'), 'port' => env('REDIS_PORT', '6379'), 'database' => env('REDIS_DB', '0'), ], 'cache' => [ 'url' => env('REDIS_URL'), 'host' => env('REDIS_HOST', '127.0.0.1'), 'username' => env('REDIS_USERNAME'), 'password' => env('REDIS_PASSWORD'), 'port' => env('REDIS_PORT', '6379'), 'database' => env('REDIS_CACHE_DB', '1'), ], ], ]; queue.php000064400000005532152244040070006404 0ustar00 env('QUEUE_CONNECTION', 'sync'), /* |-------------------------------------------------------------------------- | Queue Connections |-------------------------------------------------------------------------- | | Here you may configure the connection information for each server that | is used by your application. A default configuration has been added | for each back-end shipped with Laravel. You are free to add more. | | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" | */ 'connections' => [ 'sync' => [ 'driver' => 'sync', ], 'database' => [ 'driver' => 'database', 'table' => 'jobs', 'queue' => 'default', 'retry_after' => 90, 'after_commit' => false, ], 'beanstalkd' => [ 'driver' => 'beanstalkd', 'host' => 'localhost', 'queue' => 'default', 'retry_after' => 90, 'block_for' => 0, 'after_commit' => false, ], 'sqs' => [ 'driver' => 'sqs', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), 'queue' => env('SQS_QUEUE', 'default'), 'suffix' => env('SQS_SUFFIX'), 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), 'after_commit' => false, ], 'redis' => [ 'driver' => 'redis', 'connection' => 'default', 'queue' => env('REDIS_QUEUE', 'default'), 'retry_after' => 90, 'block_for' => null, 'after_commit' => false, ], ], /* |-------------------------------------------------------------------------- | Failed Queue Jobs |-------------------------------------------------------------------------- | | These options configure the behavior of failed queue job logging so you | can control which database and table are used to store the jobs that | have failed. You may change them to any database / table you wish. | */ 'failed' => [ 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), 'database' => env('DB_CONNECTION', 'mysql'), 'table' => 'failed_jobs', ], ]; view.php000064400000002035152244040070006225 0ustar00 [ resource_path('views'), ], /* |-------------------------------------------------------------------------- | Compiled View Path |-------------------------------------------------------------------------- | | This option determines where all the compiled Blade templates will be | stored for your application. Typically, this is within the storage | directory. However, as usual, you are free to change this value. | */ 'compiled' => env( 'VIEW_COMPILED_PATH', realpath(storage_path('framework/views')) ), ]; logging.php000064400000010115152244040070006677 0ustar00 env('LOG_CHANNEL', 'stack'), /* |-------------------------------------------------------------------------- | Deprecations Log Channel |-------------------------------------------------------------------------- | | This option controls the log channel that should be used to log warnings | regarding deprecated PHP and library features. This allows you to get | your application ready for upcoming major versions of dependencies. | */ 'deprecations' => [ 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), 'trace' => false, ], /* |-------------------------------------------------------------------------- | Log Channels |-------------------------------------------------------------------------- | | Here you may configure the log channels for your application. Out of | the box, Laravel uses the Monolog PHP logging library. This gives | you a variety of powerful log handlers / formatters to utilize. | | Available Drivers: "single", "daily", "slack", "syslog", | "errorlog", "monolog", | "custom", "stack" | */ 'channels' => [ 'stack' => [ 'driver' => 'stack', 'channels' => ['single'], 'ignore_exceptions' => false, ], 'single' => [ 'driver' => 'single', 'path' => storage_path('logs/laravel.log'), 'level' => env('LOG_LEVEL', 'debug'), 'replace_placeholders' => true, ], 'daily' => [ 'driver' => 'daily', 'path' => storage_path('logs/laravel.log'), 'level' => env('LOG_LEVEL', 'debug'), 'days' => 14, 'replace_placeholders' => true, ], 'slack' => [ 'driver' => 'slack', 'url' => env('LOG_SLACK_WEBHOOK_URL'), 'username' => 'Laravel Log', 'emoji' => ':boom:', 'level' => env('LOG_LEVEL', 'critical'), 'replace_placeholders' => true, ], 'papertrail' => [ 'driver' => 'monolog', 'level' => env('LOG_LEVEL', 'debug'), 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), 'handler_with' => [ 'host' => env('PAPERTRAIL_URL'), 'port' => env('PAPERTRAIL_PORT'), 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), ], 'processors' => [PsrLogMessageProcessor::class], ], 'stderr' => [ 'driver' => 'monolog', 'level' => env('LOG_LEVEL', 'debug'), 'handler' => StreamHandler::class, 'formatter' => env('LOG_STDERR_FORMATTER'), 'with' => [ 'stream' => 'php://stderr', ], 'processors' => [PsrLogMessageProcessor::class], ], 'syslog' => [ 'driver' => 'syslog', 'level' => env('LOG_LEVEL', 'debug'), 'facility' => LOG_USER, 'replace_placeholders' => true, ], 'errorlog' => [ 'driver' => 'errorlog', 'level' => env('LOG_LEVEL', 'debug'), 'replace_placeholders' => true, ], 'null' => [ 'driver' => 'monolog', 'handler' => NullHandler::class, ], 'emergency' => [ 'path' => storage_path('logs/laravel.log'), ], ], ]; localization-js.php000064400000000626152244040070010361 0ustar00 [ * 'validation', * 'forum/thread', * ], */ 'messages' => [ 'js' ], /* * The default path to use for the generated javascript. */ 'path' => public_path('messages.js'), ]; session.php000064400000015557152244040070006753 0ustar00 env('SESSION_DRIVER', 'file'), /* |-------------------------------------------------------------------------- | Session Lifetime |-------------------------------------------------------------------------- | | Here you may specify the number of minutes that you wish the session | to be allowed to remain idle before it expires. If you want them | to immediately expire on the browser closing, set that option. | */ 'lifetime' => env('SESSION_LIFETIME', 120), 'expire_on_close' => false, /* |-------------------------------------------------------------------------- | Session Encryption |-------------------------------------------------------------------------- | | This option allows you to easily specify that all of your session data | should be encrypted before it is stored. All encryption will be run | automatically by Laravel and you can use the Session like normal. | */ 'encrypt' => false, /* |-------------------------------------------------------------------------- | Session File Location |-------------------------------------------------------------------------- | | When using the native session driver, we need a location where session | files may be stored. A default has been set for you but a different | location may be specified. This is only needed for file sessions. | */ 'files' => storage_path('framework/sessions'), /* |-------------------------------------------------------------------------- | Session Database Connection |-------------------------------------------------------------------------- | | When using the "database" or "redis" session drivers, you may specify a | connection that should be used to manage these sessions. This should | correspond to a connection in your database configuration options. | */ 'connection' => env('SESSION_CONNECTION'), /* |-------------------------------------------------------------------------- | Session Database Table |-------------------------------------------------------------------------- | | When using the "database" session driver, you may specify the table we | should use to manage the sessions. Of course, a sensible default is | provided for you; however, you are free to change this as needed. | */ 'table' => 'sessions', /* |-------------------------------------------------------------------------- | Session Cache Store |-------------------------------------------------------------------------- | | While using one of the framework's cache driven session backends you may | list a cache store that should be used for these sessions. This value | must match with one of the application's configured cache "stores". | | Affects: "apc", "dynamodb", "memcached", "redis" | */ 'store' => env('SESSION_STORE'), /* |-------------------------------------------------------------------------- | Session Sweeping Lottery |-------------------------------------------------------------------------- | | Some session drivers must manually sweep their storage location to get | rid of old sessions from storage. Here are the chances that it will | happen on a given request. By default, the odds are 2 out of 100. | */ 'lottery' => [2, 100], /* |-------------------------------------------------------------------------- | Session Cookie Name |-------------------------------------------------------------------------- | | Here you may change the name of the cookie used to identify a session | instance by ID. The name specified here will get used every time a | new session cookie is created by the framework for every driver. | */ 'cookie' => env( 'SESSION_COOKIE', Str::slug(env('APP_NAME', 'laravel'), '_').'_session' ), /* |-------------------------------------------------------------------------- | Session Cookie Path |-------------------------------------------------------------------------- | | The session cookie path determines the path for which the cookie will | be regarded as available. Typically, this will be the root path of | your application but you are free to change this when necessary. | */ 'path' => '/', /* |-------------------------------------------------------------------------- | Session Cookie Domain |-------------------------------------------------------------------------- | | Here you may change the domain of the cookie used to identify a session | in your application. This will determine which domains the cookie is | available to in your application. A sensible default has been set. | */ 'domain' => env('SESSION_DOMAIN'), /* |-------------------------------------------------------------------------- | HTTPS Only Cookies |-------------------------------------------------------------------------- | | By setting this option to true, session cookies will only be sent back | to the server if the browser has a HTTPS connection. This will keep | the cookie from being sent to you when it can't be done securely. | */ 'secure' => env('SESSION_SECURE_COOKIE'), /* |-------------------------------------------------------------------------- | HTTP Access Only |-------------------------------------------------------------------------- | | Setting this value to true will prevent JavaScript from accessing the | value of the cookie and the cookie will only be accessible through | the HTTP protocol. You are free to modify this option if needed. | */ 'http_only' => true, /* |-------------------------------------------------------------------------- | Same-Site Cookies |-------------------------------------------------------------------------- | | This option determines how your cookies behave when cross-site requests | take place, and can be used to mitigate CSRF attacks. By default, we | will set this value to "lax" since this is a secure default value. | | Supported: "lax", "strict", "none", null | */ 'same_site' => "lax", ]; cookie-consent.php000064400000000656152244040070010202 0ustar00 env('COOKIE_CONSENT_ENABLED', true), /* * The name of the cookie in which we store if the user * has agreed to accept the conditions. */ 'cookie_name' => 'laravel_cookie_consent', /* * Set the cookie duration in days. Default is 365 * 20. */ 'cookie_lifetime' => 365 * 20, ]; modules-livewire.php000064400000002011152244040070010541 0ustar00 'Livewire', /* |-------------------------------------------------------------------------- | View Path |-------------------------------------------------------------------------- | */ 'view' => 'Resources/views/livewire', /* |-------------------------------------------------------------------------- | Custom modules setup |-------------------------------------------------------------------------- | */ // 'custom_modules' => [ // 'Chat' => [ // 'path' => base_path('libraries/Chat'), // 'module_namespace' => 'Libraries\\Chat', // // 'namespace' => 'Livewire', // // 'view' => 'Resources/views/livewire', // // 'name_lower' => 'chat', // ], // ], ]; cors.php000064400000001533152244040070006223 0ustar00 ['*'], 'allowed_methods' => ['*'], 'allowed_origins' => [env('FRONTEND_URL', 'http://localhost:3000')], 'allowed_origins_patterns' => [], 'allowed_headers' => ['*'], 'exposed_headers' => [], 'max_age' => 0, 'supports_credentials' => true, ]; livewire.php000064400000014211152244040070007100 0ustar00 'App\\Livewire', /* |--------------------------------------------------------------------------- | View Path |--------------------------------------------------------------------------- | | This value is used to specify where Livewire component Blade templates are | stored when running file creation commands like `artisan make:livewire`. | It is also used if you choose to omit a component's render() method. | */ 'view_path' => resource_path('views/livewire'), /* |--------------------------------------------------------------------------- | Layout |--------------------------------------------------------------------------- | The view that will be used as the layout when rendering a single component | as an entire page via `Route::get('/post/create', CreatePost::class);`. | In this case, the view returned by CreatePost will render into $slot. | */ 'layout' => 'components.layouts.app', /* |--------------------------------------------------------------------------- | Lazy Loading Placeholder |--------------------------------------------------------------------------- | Livewire allows you to lazy load components that would otherwise slow down | the initial page load. Every component can have a custom placeholder or | you can define the default placeholder view for all components below. | */ 'lazy_placeholder' => null, /* |--------------------------------------------------------------------------- | Temporary File Uploads |--------------------------------------------------------------------------- | | Livewire handles file uploads by storing uploads in a temporary directory | before the file is stored permanently. All file uploads are directed to | a global endpoint for temporary storage. You may configure this below: | */ 'temporary_file_upload' => [ 'disk' => null, // Example: 'local', 's3' | Default: 'default' 'rules' => null, // Example: ['file', 'mimes:png,jpg'] | Default: ['required', 'file', 'max:12288'] (12MB) 'directory' => null, // Example: 'tmp' | Default: 'livewire-tmp' 'middleware' => null, // Example: 'throttle:5,1' | Default: 'throttle:60,1' 'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs... 'png', 'gif', 'bmp', 'svg', 'wav', 'mp4', 'mov', 'avi', 'wmv', 'mp3', 'm4a', 'jpg', 'jpeg', 'mpga', 'webp', 'wma', ], 'max_upload_time' => 5, // Max duration (in minutes) before an upload is invalidated... 'cleanup' => true, // Should cleanup temporary uploads older than 24 hrs... ], /* |--------------------------------------------------------------------------- | Render On Redirect |--------------------------------------------------------------------------- | | This value determines if Livewire will run a component's `render()` method | after a redirect has been triggered using something like `redirect(...)` | Setting this to true will render the view once more before redirecting | */ 'render_on_redirect' => false, /* |--------------------------------------------------------------------------- | Eloquent Model Binding |--------------------------------------------------------------------------- | | Previous versions of Livewire supported binding directly to eloquent model | properties using wire:model by default. However, this behavior has been | deemed too "magical" and has therefore been put under a feature flag. | */ 'legacy_model_binding' => false, /* |--------------------------------------------------------------------------- | Auto-inject Frontend Assets |--------------------------------------------------------------------------- | | By default, Livewire automatically injects its JavaScript and CSS into the | and of pages containing Livewire components. By disabling | this behavior, you need to use @livewireStyles and @livewireScripts. | */ 'inject_assets' => true, /* |--------------------------------------------------------------------------- | Navigate (SPA mode) |--------------------------------------------------------------------------- | | By adding `wire:navigate` to links in your Livewire application, Livewire | will prevent the default link handling and instead request those pages | via AJAX, creating an SPA-like effect. Configure this behavior here. | */ 'navigate' => [ 'show_progress_bar' => true, 'progress_bar_color' => '#2299dd', ], /* |--------------------------------------------------------------------------- | HTML Morph Markers |--------------------------------------------------------------------------- | | Livewire intelligently "morphs" existing HTML into the newly rendered HTML | after each update. To make this process more reliable, Livewire injects | "markers" into the rendered Blade surrounding @if, @class & @foreach. | */ 'inject_morph_markers' => true, /* |--------------------------------------------------------------------------- | Pagination Theme |--------------------------------------------------------------------------- | | When enabling Livewire's pagination feature by using the `WithPagination` | trait, Livewire will use Tailwind templates to render pagination views | on the page. If you want Bootstrap CSS, you can specify: "bootstrap" | */ 'pagination_theme' => 'tailwind', ]; services.php000064400000004554152244040070007106 0ustar00 [ 'domain' => env('MAILGUN_DOMAIN'), 'secret' => env('MAILGUN_SECRET'), 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), 'scheme' => 'https', ], 'postmark' => [ 'token' => env('POSTMARK_TOKEN'), ], 'ses' => [ 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), ], 'stripe' => [ 'key' => env('STRIPE_KEY'), 'secret_key' => env('STRIPE_SECRET'), ], 'google' => [ 'client_id' => env('GOOGLE_CLIENT_ID'), 'client_secret' => env('GOOGLE_CLIENT_SECRET'), 'redirect' => env('GOOGLE_REDIRECT'), ], 'facebook' => [ 'client_id' => env('FACEBOOK_APP_ID'), 'client_secret' => env('FACEBOOK_APP_SECRET'), 'redirect' => env('FACEBOOK_REDIRECT'), ], 'paystack' => [ 'public' => env('PAYSTACK_PUBLIC_KEY'), 'secret' => env('PAYSTACK_SECRET_KEY'), 'payment_url' => env('PAYSTACK_PAYMENT_URL', 'https://api.paystack.co'), ], 'claude' => [ 'api_key' => env('CLAUDE_API_KEY', 'sk-ant-CONFIGURE_ME'), 'model' => env('CLAUDE_MODEL', 'claude-haiku-4-5'), ], 'asaas' => [ 'api_key' => env('ASAAS_API_KEY', ''), 'sandbox' => env('ASAAS_SANDBOX', true), 'webhook_token' => env('ASAAS_WEBHOOK_TOKEN', ''), 'base_url' => env('ASAAS_SANDBOX', true) ? 'https://sandbox.asaas.com/api/v3' : 'https://api.asaas.com/api/v3', ], 'ifthen' => [ 'entity_key' => env('IFTHEN_ENTITY_KEY', ''), 'sub_entity_key' => env('IFTHEN_SUB_ENTITY_KEY', ''), 'anti_phishing' => env('IFTHEN_ANTI_PHISHING', ''), 'backoffice_key' => env('IFTHEN_BACKOFFICE_KEY', ''), ], ];purifier.php000064400000010466152244040070007107 0ustar00set('Core.Encoding', $this->config->get('purifier.encoding')); * $config->set('Cache.SerializerPath', $this->config->get('purifier.cachePath')); * if ( ! $this->config->get('purifier.finalize')) { * $config->autoFinalize = false; * } * $config->loadArray($this->getConfig()); * * You must NOT delete the default settings * anything in settings should be compacted with params that needed to instance HTMLPurifier_Config. * * @link http://htmlpurifier.org/live/configdoc/plain.html */ return [ 'encoding' => 'UTF-8', 'finalize' => true, 'ignoreNonStrings' => false, 'cachePath' => storage_path('app/purifier'), 'cacheFileMode' => 0755, 'settings' => [ 'default' => [ 'HTML.Doctype' => 'HTML 4.01 Transitional', 'HTML.Allowed' => 'div,b,strong,i,em,u,a[href|title],ul,ol,li,p[style],br,span[style],img[width|height|alt|src]', 'CSS.AllowedProperties' => 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align', 'AutoFormat.AutoParagraph' => true, 'AutoFormat.RemoveEmpty' => true, ], 'test' => [ 'Attr.EnableID' => 'true', ], "youtube" => [ "HTML.SafeIframe" => 'true', "URI.SafeIframeRegexp" => "%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/)%", ], 'custom_definition' => [ 'id' => 'html5-definitions', 'rev' => 1, 'debug' => false, 'elements' => [ // http://developers.whatwg.org/sections.html ['section', 'Block', 'Flow', 'Common'], ['nav', 'Block', 'Flow', 'Common'], ['article', 'Block', 'Flow', 'Common'], ['aside', 'Block', 'Flow', 'Common'], ['header', 'Block', 'Flow', 'Common'], ['footer', 'Block', 'Flow', 'Common'], // Content model actually excludes several tags, not modelled here ['address', 'Block', 'Flow', 'Common'], ['hgroup', 'Block', 'Required: h1 | h2 | h3 | h4 | h5 | h6', 'Common'], // http://developers.whatwg.org/grouping-content.html ['figure', 'Block', 'Optional: (figcaption, Flow) | (Flow, figcaption) | Flow', 'Common'], ['figcaption', 'Inline', 'Flow', 'Common'], // http://developers.whatwg.org/the-video-element.html#the-video-element ['video', 'Block', 'Optional: (source, Flow) | (Flow, source) | Flow', 'Common', [ 'src' => 'URI', 'type' => 'Text', 'width' => 'Length', 'height' => 'Length', 'poster' => 'URI', 'preload' => 'Enum#auto,metadata,none', 'controls' => 'Bool', ]], ['source', 'Block', 'Flow', 'Common', [ 'src' => 'URI', 'type' => 'Text', ]], // http://developers.whatwg.org/text-level-semantics.html ['s', 'Inline', 'Inline', 'Common'], ['var', 'Inline', 'Inline', 'Common'], ['sub', 'Inline', 'Inline', 'Common'], ['sup', 'Inline', 'Inline', 'Common'], ['mark', 'Inline', 'Inline', 'Common'], ['wbr', 'Inline', 'Empty', 'Core'], // http://developers.whatwg.org/edits.html ['ins', 'Block', 'Flow', 'Common', ['cite' => 'URI', 'datetime' => 'CDATA']], ['del', 'Block', 'Flow', 'Common', ['cite' => 'URI', 'datetime' => 'CDATA']], ], 'attributes' => [ ['iframe', 'allowfullscreen', 'Bool'], ['table', 'height', 'Text'], ['td', 'border', 'Text'], ['th', 'border', 'Text'], ['tr', 'width', 'Text'], ['tr', 'height', 'Text'], ['tr', 'border', 'Text'], ], ], 'custom_attributes' => [ ['a', 'target', 'Enum#_blank,_self,_target,_top'], ], 'custom_elements' => [ ['u', 'Inline', 'Inline', 'Common'], ], ], ]; tenancy.php000064400000016625152244040070006726 0ustar00 \App\Models\MultiTenant::class, 'id_generator' => Stancl\Tenancy\UUIDGenerator::class, 'domain_model' => Domain::class, /** * The list of domains hosting your central app. * * Only relevant if you're using the domain or subdomain identification middleware. */ 'central_domains' => [ '127.0.0.1', 'localhost', ], /** * Tenancy bootstrappers are executed when tenancy is initialized. * Their responsibility is making Laravel features tenant-aware. * * To configure their behavior, see the config keys below. */ 'bootstrappers' => [ Stancl\Tenancy\Bootstrappers\DatabaseTenancyBootstrapper::class, Stancl\Tenancy\Bootstrappers\CacheTenancyBootstrapper::class, Stancl\Tenancy\Bootstrappers\FilesystemTenancyBootstrapper::class, Stancl\Tenancy\Bootstrappers\QueueTenancyBootstrapper::class, // Stancl\Tenancy\Bootstrappers\RedisTenancyBootstrapper::class, // Note: phpredis is needed ], /** * Database tenancy config. Used by DatabaseTenancyBootstrapper. */ 'database' => [ 'central_connection' => env('DB_CONNECTION', 'central'), /** * Connection used as a "template" for the tenant database connection. */ 'template_tenant_connection' => null, /** * Tenant database names are created like this: * prefix + tenant_id + suffix. */ 'prefix' => 'tenant', 'suffix' => '', /** * TenantDatabaseManagers are classes that handle the creation & deletion of tenant databases. */ 'managers' => [ 'sqlite' => Stancl\Tenancy\TenantDatabaseManagers\SQLiteDatabaseManager::class, 'mysql' => Stancl\Tenancy\TenantDatabaseManagers\MySQLDatabaseManager::class, 'pgsql' => Stancl\Tenancy\TenantDatabaseManagers\PostgreSQLDatabaseManager::class, /** * Use this database manager for MySQL to have a DB user created for each tenant database. * You can customize the grants given to these users by changing the $grants property. */ // 'mysql' => Stancl\Tenancy\TenantDatabaseManagers\PermissionControlledMySQLDatabaseManager::class, /** * Disable the pgsql manager above, and enable the one below if you * want to separate tenant DBs by schemas rather than databases. */ // 'pgsql' => Stancl\Tenancy\TenantDatabaseManagers\PostgreSQLSchemaManager::class, // Separate by schema instead of database ], ], /** * Cache tenancy config. Used by CacheTenancyBootstrapper. * * This works for all Cache facade calls, cache() helper * calls and direct calls to injected cache stores. * * Each key in cache will have a tag applied on it. This tag is used to * scope the cache both when writing to it and when reading from it. * * You can clear cache selectively by specifying the tag. */ 'cache' => [ 'tag_base' => 'tenant', // This tag_base, followed by the tenant_id, will form a tag that will be applied on each cache call. ], /** * Filesystem tenancy config. Used by FilesystemTenancyBootstrapper. * https://tenancyforlaravel.com/docs/v3/tenancy-bootstrappers/#filesystem-tenancy-boostrapper. */ 'filesystem' => [ /** * Each disk listed in the 'disks' array will be suffixed by the suffix_base, followed by the tenant_id. */ 'suffix_base' => 'tenant', 'disks' => [ 'local', 'public', // 's3', ], /** * Use this for local disks. * * See https://tenancyforlaravel.com/docs/v3/tenancy-bootstrappers/#filesystem-tenancy-boostrapper */ 'root_override' => [ // Disks whose roots should be overriden after storage_path() is suffixed. 'local' => '%storage_path%/app/', 'public' => '%storage_path%/app/public/', ], /** * Should storage_path() be suffixed. * * Note: Disabling this will likely break local disk tenancy. Only disable this if you're using an external file storage service like S3. * * For the vast majority of applications, this feature should be enabled. But in some * edge cases, it can cause issues (like using Passport with Vapor - see #196), so * you may want to disable this if you are experiencing these edge case issues. */ 'suffix_storage_path' => true, /** * By default, asset() calls are made multi-tenant too. You can use global_asset() and mix() * for global, non-tenant-specific assets. However, you might have some issues when using * packages that use asset() calls inside the tenant app. To avoid such issues, you can * disable asset() helper tenancy and explicitly use tenant_asset() calls in places * where you want to use tenant-specific assets (product images, avatars, etc). */ 'asset_helper_tenancy' => true, ], /** * Redis tenancy config. Used by RedisTenancyBoostrapper. * * Note: You need phpredis to use Redis tenancy. * * Note: You don't need to use this if you're using Redis only for cache. * Redis tenancy is only relevant if you're making direct Redis calls, * either using the Redis facade or by injecting it as a dependency. */ 'redis' => [ 'prefix_base' => 'tenant', // Each key in Redis will be prepended by this prefix_base, followed by the tenant id. 'prefixed_connections' => [ // Redis connections whose keys are prefixed, to separate one tenant's keys from another. // 'default', ], ], /** * Features are classes that provide additional functionality * not needed for tenancy to be bootstrapped. They are run * regardless of whether tenancy has been initialized. * * See the documentation page for each class to * understand which ones you want to enable. */ 'features' => [ // Stancl\Tenancy\Features\UserImpersonation::class, // Stancl\Tenancy\Features\TelescopeTags::class, // Stancl\Tenancy\Features\UniversalRoutes::class, // Stancl\Tenancy\Features\TenantConfig::class, // https://tenancyforlaravel.com/docs/v3/features/tenant-config // Stancl\Tenancy\Features\CrossDomainRedirect::class, // https://tenancyforlaravel.com/docs/v3/features/cross-domain-redirect ], /** * Should tenancy routes be registered. * * Tenancy routes include tenant asset routes. By default, this route is * enabled. But it may be useful to disable them if you use external * storage (e.g. S3 / Dropbox) or have a custom asset controller. */ 'routes' => true, /** * Parameters used by the tenants:migrate command. */ 'migration_parameters' => [ '--force' => true, // This needs to be true to run migrations in production. '--path' => [database_path('migrations/tenant')], '--realpath' => true, ], /** * Parameters used by the tenants:seed command. */ 'seeder_parameters' => [ '--class' => 'DatabaseSeeder', // root seeder class // '--force' => true, ], ]; phonepe.php000064400000000535152244040070006714 0ustar00 env('PHONEPE_MERCHANT_ID'), 'merchantUserId' => env('PHONEPE_MERCHANT_USER_ID'), 'env' => env('PHONEPE_ENV'), 'saltKey' => env('PHONEPE_SALT_KEY'), 'saltIndex' => env('PHONEPE_SALT_INDEX'), 'redirectUrl' => env('PHONEPE_REDIRECT_URL'), 'callBackUrl' => env('PHONEPE_CALLBACK_URL') ); error_log000064400000001524152244040070006461 0ustar00[07-Jul-2026 12:47:45 UTC] PHP Fatal error: Uncaught Error: Call to undefined function env() in /home/cardxfeb/public_html/vendor/laravel/sanctum/config/sanctum.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/laravel/sanctum/config/sanctum.php on line 18 [16-Jul-2026 11:47:14 UTC] PHP Fatal error: Uncaught Error: Call to undefined function env() in /home/cardxfeb/public_html/vendor/laravel/sanctum/config/sanctum.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/laravel/sanctum/config/sanctum.php on line 18 [18-Jul-2026 18:36:26 UTC] PHP Fatal error: Uncaught Error: Call to undefined function env() in /home/cardxfeb/public_html/vendor/laravel/sanctum/config/sanctum.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/laravel/sanctum/config/sanctum.php on line 18 flutterwave.php000064400000001355152244040070007627 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ return [ /** * Public Key: Your Rave publicKey. Sign up on https://dashboard.flutterwave.com/ to get one from your settings page * */ 'publicKey' => env('FLW_PUBLIC_KEY'), /** * Secret Key: Your Rave secretKey. Sign up on https://dashboard.flutterwave.com/ to get one from your settings page * */ 'secretKey' => env('FLW_SECRET_KEY'), /** * Prefix: Secret hash for webhook * */ 'secretHash' => env('FLW_SECRET_HASH', ''), ]; mail.php000064400000007344152244040070006205 0ustar00 env('MAIL_MAILER', 'smtp'), /* |-------------------------------------------------------------------------- | Mailer Configurations |-------------------------------------------------------------------------- | | Here you may configure all of the mailers used by your application plus | their respective settings. Several examples have been configured for | you and you are free to add your own as your application requires. | | Laravel supports a variety of mail "transport" drivers to be used while | sending an e-mail. You will specify which one you are using for your | mailers below. You are free to add additional mailers as required. | | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", | "postmark", "log", "array", "failover" | */ 'mailers' => [ 'smtp' => [ 'transport' => 'smtp', 'url' => env('MAIL_URL'), 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 'port' => env('MAIL_PORT', 587), 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'timeout' => null, 'local_domain' => env('MAIL_EHLO_DOMAIN'), ], 'ses' => [ 'transport' => 'ses', ], 'mailgun' => [ 'transport' => 'mailgun', // 'client' => [ // 'timeout' => 5, // ], ], 'postmark' => [ 'transport' => 'postmark', // 'client' => [ // 'timeout' => 5, // ], ], 'sendmail' => [ 'transport' => 'sendmail', 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), ], 'log' => [ 'transport' => 'log', 'channel' => env('MAIL_LOG_CHANNEL'), ], 'array' => [ 'transport' => 'array', ], 'failover' => [ 'transport' => 'failover', 'mailers' => [ 'smtp', 'log', ], ], ], /* |-------------------------------------------------------------------------- | Global "From" Address |-------------------------------------------------------------------------- | | You may wish for all e-mails sent by your application to be sent from | the same address. Here, you may specify a name and address that is | used globally for all e-mails that are sent by your application. | */ 'from' => [ 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), 'name' => env('MAIL_FROM_NAME', 'Example'), ], /* |-------------------------------------------------------------------------- | Markdown Mail Settings |-------------------------------------------------------------------------- | | If you are using Markdown based email rendering, you may configure your | theme and component paths here, allowing you to customize the design | of the emails. Or, you may simply stick with the Laravel defaults! | */ 'markdown' => [ 'theme' => 'default', 'paths' => [ resource_path('views/vendor/mail'), ], ], ]; sanctum.php000064400000005623152244040100006725 0ustar00 explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( '%s%s', 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', Sanctum::currentApplicationUrlWithPort() ))), /* |-------------------------------------------------------------------------- | Sanctum Guards |-------------------------------------------------------------------------- | | This array contains the authentication guards that will be checked when | Sanctum is trying to authenticate a request. If none of these guards | are able to authenticate the request, Sanctum will use the bearer | token that's present on an incoming request for authentication. | */ 'guard' => ['web'], /* |-------------------------------------------------------------------------- | Expiration Minutes |-------------------------------------------------------------------------- | | This value controls the number of minutes until an issued token will be | considered expired. This will override any values set in the token's | "expires_at" attribute, but first-party sessions are not affected. | */ 'expiration' => null, /* |-------------------------------------------------------------------------- | Token Prefix |-------------------------------------------------------------------------- | | Sanctum can prefix new tokens in order to take advantage of numerous | security scanning initiatives maintained by open source platforms | that notify developers if they commit tokens into repositories. | | See: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning | */ 'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''), /* |-------------------------------------------------------------------------- | Sanctum Middleware |-------------------------------------------------------------------------- | | When authenticating your first-party SPA with Sanctum you may need to | customize some of the middleware Sanctum uses while processing the | request. You may change the middleware listed below as required. | */ 'middleware' => [ 'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class, 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, ], ]; tinker.php000064400000002740152270104450006554 0ustar00 [ // App\Console\Commands\ExampleCommand::class, ], /* |-------------------------------------------------------------------------- | Auto Aliased Classes |-------------------------------------------------------------------------- | | Tinker will not automatically alias classes in your vendor namespaces | but you may explicitly allow a subset of classes to get aliased by | adding the names of each of those classes to the following list. | */ 'alias' => [ // ], /* |-------------------------------------------------------------------------- | Classes That Should Not Be Aliased |-------------------------------------------------------------------------- | | Typically, Tinker automatically aliases classes as you require them in | Tinker. However, you may wish to never alias certain classes, which | you may accomplish by listing the classes in the following array. | */ 'dont_alias' => [ 'App\Nova', ], ]; LICENSE.md000064400000002751152270433410006156 0ustar00BSD 3-Clause License Copyright (c) 2022, Colin O'Dell. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. composer.json000064400000003652152270433410007275 0ustar00{ "name": "league/config", "type": "library", "description": "Define configuration arrays with strict schemas and access values with dot notation", "keywords": ["configuration","config","schema","array","nested","dot","dot-access"], "homepage": "https://config.thephpleague.com", "license": "BSD-3-Clause", "authors": [ { "name": "Colin O'Dell", "email": "colinodell@gmail.com", "homepage": "https://www.colinodell.com", "role": "Lead Developer" } ], "support": { "docs": "https://config.thephpleague.com/", "issues": "https://github.com/thephpleague/config/issues", "rss": "https://github.com/thephpleague/config/releases.atom", "source": "https://github.com/thephpleague/config" }, "require": { "php": "^7.4 || ^8.0", "dflydev/dot-access-data": "^3.0.1", "nette/schema": "^1.2" }, "require-dev": { "phpstan/phpstan": "^1.8.2", "phpunit/phpunit": "^9.5.5", "scrutinizer/ocular": "^1.8.1", "unleashedtech/php-coding-standard": "^3.1", "vimeo/psalm": "^4.7.3" }, "minimum-stability": "dev", "prefer-stable": true, "autoload": { "psr-4": { "League\\Config\\": "src" } }, "autoload-dev": { "psr-4": { "League\\Config\\Tests\\": "tests" } }, "scripts": { "phpcs": "phpcs", "phpstan": "phpstan analyse", "phpunit": "phpunit --no-coverage", "psalm": "psalm", "test": [ "@phpcs", "@phpstan", "@psalm", "@phpunit" ] }, "extra": { "branch-alias": { "dev-main": "1.2-dev" } }, "config": { "sort-packages": true, "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true } } } README.md000064400000016002152270433410006023 0ustar00# league/config [![Latest Version](https://img.shields.io/packagist/v/league/config.svg?style=flat-square)](https://packagist.org/packages/league/config) [![Total Downloads](https://img.shields.io/packagist/dt/league/config.svg?style=flat-square)](https://packagist.org/packages/league/config) [![Software License](https://img.shields.io/badge/License-BSD--3-brightgreen.svg?style=flat-square)](LICENSE) [![Build Status](https://img.shields.io/github/workflow/status/thephpleague/config/Tests/main.svg?style=flat-square)](https://github.com/thephpleague/config/actions?query=workflow%3ATests+branch%3Amain) [![Coverage Status](https://img.shields.io/scrutinizer/coverage/g/thephpleague/config.svg?style=flat-square)](https://scrutinizer-ci.com/g/thephpleague/config/code-structure) [![Quality Score](https://img.shields.io/scrutinizer/g/thephpleague/config.svg?style=flat-square)](https://scrutinizer-ci.com/g/thephpleague/config) [![Sponsor development of this project](https://img.shields.io/badge/sponsor%20this%20package-%E2%9D%A4-ff69b4.svg?style=flat-square)](https://www.colinodell.com/sponsor) **league/config** helps you define nested configuration arrays with strict schemas and access configuration values with dot notation. It was created by [Colin O'Dell][@colinodell]. ## 📦 Installation This project requires PHP 7.4 or higher. To install it via [Composer] simply run: ```bash composer require league/config ``` ## 🧰️ Basic Usage The `Configuration` class provides everything you need to define the configuration structure and fetch values: ```php use League\Config\Configuration; use Nette\Schema\Expect; // Define your configuration schema $config = new Configuration([ 'database' => Expect::structure([ 'driver' => Expect::anyOf('mysql', 'postgresql', 'sqlite')->required(), 'host' => Expect::string()->default('localhost'), 'port' => Expect::int()->min(1)->max(65535), 'ssl' => Expect::bool(), 'database' => Expect::string()->required(), 'username' => Expect::string()->required(), 'password' => Expect::string()->nullable(), ]), 'logging' => Expect::structure([ 'enabled' => Expect::bool()->default($_ENV['DEBUG'] == true), 'file' => Expect::string()->deprecated("use logging.path instead"), 'path' => Expect::string()->assert(function ($path) { return \is_writeable($path); })->required(), ]), ]); // Set the values, either all at once with `merge()`: $config->merge([ 'database' => [ 'driver' => 'mysql', 'port' => 3306, 'database' => 'mydb', 'username' => 'user', 'password' => 'secret', ], ]); // Or one-at-a-time with `set()`: $config->set('logging.path', '/var/log/myapp.log'); // You can now retrieve those values with `get()`. // Validation and defaults will be applied for you automatically $config->get('database'); // Fetches the entire "database" section as an array $config->get('database.driver'); // Fetch a specific nested value with dot notation $config->get('database/driver'); // Fetch a specific nested value with slash notation $config->get('database.host'); // Returns the default value "localhost" $config->get('logging.path'); // Guaranteed to be writeable thanks to the assertion in the schema // If validation fails an `InvalidConfigurationException` will be thrown: $config->set('database.driver', 'mongodb'); $config->get('database.driver'); // InvalidConfigurationException // Attempting to fetch a non-existent key will result in an `InvalidConfigurationException` $config->get('foo.bar'); // You could avoid this by checking whether that item exists: $config->exists('foo.bar'); // Returns `false` ``` ## 📓 Documentation Full documentation can be found at [config.thephpleague.com][docs]. ## 💭 Philosophy This library aims to provide a **simple yet opinionated** approach to configuration with the following goals: - The configuration should operate on **arrays with nested values** which are easily accessible - The configuration structure should be **defined with strict schemas** defining the overall structure, allowed types, and allowed values - Schemas should be defined using a **simple, fluent interface** - You should be able to **add and combine schemas but never modify existing ones** - Both the configuration values and the schema should be **defined and managed with PHP code** - Schemas should be **immutable**; they should never change once they are set - Configuration values should never define or influence the schemas As a result, this library will likely **never** support features like: - Loading and/or exporting configuration values or schemas using YAML, XML, or other files - Parsing configuration values from a command line or other user interface - Dynamically changing the schema, allowed values, or default values based on other configuration values If you need that functionality you should check out other libraries like: - [symfony/config] - [symfony/options-resolver] - [hassankhan/config] - [consolidation/config] - [laminas/laminas-config] ## 🏷️ Versioning [SemVer](http://semver.org/) is followed closely. Minor and patch releases should not introduce breaking changes to the codebase. Any classes or methods marked `@internal` are not intended for use outside this library and are subject to breaking changes at any time, so please avoid using them. ## 🛠️ Maintenance & Support When a new **minor** version (e.g. `1.0` -> `1.1`) is released, the previous one (`1.0`) will continue to receive security and critical bug fixes for *at least* 3 months. When a new **major** version is released (e.g. `1.1` -> `2.0`), the previous one (`1.1`) will receive critical bug fixes for *at least* 3 months and security updates for 6 months after that new release comes out. (This policy may change in the future and exceptions may be made on a case-by-case basis.) ## 👷‍️ Contributing Contributions to this library are **welcome**! We only ask that you adhere to our [contributor guidelines] and avoid making changes that conflict with our Philosophy above. ## 🧪 Testing ```bash composer test ``` ## 📄 License **league/config** is licensed under the BSD-3 license. See the [`LICENSE.md`][license] file for more details. ## 🗺️ Who Uses It? This project is used by [league/commonmark][league-commonmark]. [docs]: https://config.thephpleague.com/ [@colinodell]: https://www.twitter.com/colinodell [Composer]: https://getcomposer.org/ [PHP League]: https://thephpleague.com [symfony/config]: https://symfony.com/doc/current/components/config.html [symfony/options-resolver]: https://symfony.com/doc/current/components/options_resolver.html [hassankhan/config]: https://github.com/hassankhan/config [consolidation/config]: https://github.com/consolidation/config [laminas/laminas-config]: https://docs.laminas.dev/laminas-config/ [contributor guidelines]: https://github.com/thephpleague/config/blob/main/.github/CONTRIBUTING.md [license]: https://github.com/thephpleague/config/blob/main/LICENSE.md [league-commonmark]: https://commonmark.thephpleague.com CHANGELOG.md000064400000002403152270433410006355 0ustar00# Change Log All notable changes to this project will be documented in this file. Updates should follow the [Keep a CHANGELOG](https://keepachangelog.com/) principles. ## [Unreleased][unreleased] ## [1.2.0] - 2022-12-11 ### Changed - Values can now be set prior to the corresponding schema being registered. - `exists()` and `get()` now only trigger validation for the relevant schema, not the entire config at once. ## [1.1.1] - 2021-08-14 ### Changed - Bumped the minimum version of dflydev/dot-access-data for PHP 8.1 support ## [1.1.0] - 2021-06-19 ### Changed - Bumped the minimum PHP version to 7.4+ - Bumped the minimum version of nette/schema to 1.2.0 ## [1.0.1] - 2021-05-31 ### Fixed - Fixed the `ConfigurationExceptionInterface` marker interface not extending `Throwable` (#2) ## [1.0.0] - 2021-05-31 Initial release! 🎉 [unreleased]: https://github.com/thephpleague/config/compare/v1.2.0...main [1.2.0]: https://github.com/thephpleague/config/compare/v1.1.1...v.1.2.0 [1.1.1]: https://github.com/thephpleague/config/compare/v1.1.0...v1.1.1 [1.1.0]: https://github.com/thephpleague/config/compare/v1.0.1...v1.1.0 [1.0.1]: https://github.com/thephpleague/config/compare/v1.0.0...v1.0.1 [1.0.0]: https://github.com/thephpleague/config/releases/tag/v1.0.0 src/SchemaBuilderInterface.php000064400000001112152270433410012370 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\Config; use Nette\Schema\Schema; /** * Interface that allows new schemas to be added to a configuration */ interface SchemaBuilderInterface { /** * Registers a new configuration schema at the given top-level key */ public function addSchema(string $key, Schema $schema): void; } src/Configuration.php000064400000014524152270433410010662 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\Config; use Dflydev\DotAccessData\Data; use Dflydev\DotAccessData\DataInterface; use Dflydev\DotAccessData\Exception\DataException; use Dflydev\DotAccessData\Exception\InvalidPathException; use Dflydev\DotAccessData\Exception\MissingPathException; use League\Config\Exception\UnknownOptionException; use League\Config\Exception\ValidationException; use Nette\Schema\Expect; use Nette\Schema\Processor; use Nette\Schema\Schema; use Nette\Schema\ValidationException as NetteValidationException; final class Configuration implements ConfigurationBuilderInterface, ConfigurationInterface { /** @psalm-readonly */ private Data $userConfig; /** * @var array * * @psalm-allow-private-mutation */ private array $configSchemas = []; /** @psalm-allow-private-mutation */ private Data $finalConfig; /** * @var array * * @psalm-allow-private-mutation */ private array $cache = []; /** @psalm-readonly */ private ConfigurationInterface $reader; /** * @param array $baseSchemas */ public function __construct(array $baseSchemas = []) { $this->configSchemas = $baseSchemas; $this->userConfig = new Data(); $this->finalConfig = new Data(); $this->reader = new ReadOnlyConfiguration($this); } /** * Registers a new configuration schema at the given top-level key * * @psalm-allow-private-mutation */ public function addSchema(string $key, Schema $schema): void { $this->invalidate(); $this->configSchemas[$key] = $schema; } /** * {@inheritDoc} * * @psalm-allow-private-mutation */ public function merge(array $config = []): void { $this->invalidate(); $this->userConfig->import($config, DataInterface::REPLACE); } /** * {@inheritDoc} * * @psalm-allow-private-mutation */ public function set(string $key, $value): void { $this->invalidate(); try { $this->userConfig->set($key, $value); } catch (DataException $ex) { throw new UnknownOptionException($ex->getMessage(), $key, (int) $ex->getCode(), $ex); } } /** * {@inheritDoc} * * @psalm-external-mutation-free */ public function get(string $key) { if (\array_key_exists($key, $this->cache)) { return $this->cache[$key]; } try { $this->build(self::getTopLevelKey($key)); return $this->cache[$key] = $this->finalConfig->get($key); } catch (InvalidPathException | MissingPathException $ex) { throw new UnknownOptionException($ex->getMessage(), $key, (int) $ex->getCode(), $ex); } } /** * {@inheritDoc} * * @psalm-external-mutation-free */ public function exists(string $key): bool { if (\array_key_exists($key, $this->cache)) { return true; } try { $this->build(self::getTopLevelKey($key)); return $this->finalConfig->has($key); } catch (InvalidPathException | UnknownOptionException $ex) { return false; } } /** * @psalm-mutation-free */ public function reader(): ConfigurationInterface { return $this->reader; } /** * @psalm-external-mutation-free */ private function invalidate(): void { $this->cache = []; $this->finalConfig = new Data(); } /** * Applies the schema against the configuration to return the final configuration * * @throws ValidationException|UnknownOptionException|InvalidPathException * * @psalm-allow-private-mutation */ private function build(string $topLevelKey): void { if ($this->finalConfig->has($topLevelKey)) { return; } if (! isset($this->configSchemas[$topLevelKey])) { throw new UnknownOptionException(\sprintf('Missing config schema for "%s"', $topLevelKey), $topLevelKey); } try { $userData = [$topLevelKey => $this->userConfig->get($topLevelKey)]; } catch (DataException $ex) { $userData = []; } try { $schema = $this->configSchemas[$topLevelKey]; $processor = new Processor(); $processed = $processor->process(Expect::structure([$topLevelKey => $schema]), $userData); $this->raiseAnyDeprecationNotices($processor->getWarnings()); $this->finalConfig->import((array) self::convertStdClassesToArrays($processed)); } catch (NetteValidationException $ex) { throw new ValidationException($ex); } } /** * Recursively converts stdClass instances to arrays * * @phpstan-template T * * @param T $data * * @return mixed * * @phpstan-return ($data is \stdClass ? array : T) * * @psalm-pure */ private static function convertStdClassesToArrays($data) { if ($data instanceof \stdClass) { $data = (array) $data; } if (\is_array($data)) { foreach ($data as $k => $v) { $data[$k] = self::convertStdClassesToArrays($v); } } return $data; } /** * @param string[] $warnings */ private function raiseAnyDeprecationNotices(array $warnings): void { foreach ($warnings as $warning) { @\trigger_error($warning, \E_USER_DEPRECATED); } } /** * @throws InvalidPathException */ private static function getTopLevelKey(string $path): string { if (\strlen($path) === 0) { throw new InvalidPathException('Path cannot be an empty string'); } $path = \str_replace(['.', '/'], '.', $path); $firstDelimiter = \strpos($path, '.'); if ($firstDelimiter === false) { return $path; } return \substr($path, 0, $firstDelimiter); } } src/ReadOnlyConfiguration.php000064400000001442152270433410012313 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\Config; /** * Provides read-only access to a given Configuration object */ final class ReadOnlyConfiguration implements ConfigurationInterface { private Configuration $config; public function __construct(Configuration $config) { $this->config = $config; } /** * {@inheritDoc} */ public function get(string $key) { return $this->config->get($key); } public function exists(string $key): bool { return $this->config->exists($key); } } src/Exception/UnknownOptionException.php000064400000001354152270433420014516 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\Config\Exception; use Throwable; final class UnknownOptionException extends \InvalidArgumentException implements ConfigurationExceptionInterface { private string $path; public function __construct(string $message, string $path, int $code = 0, ?Throwable $previous = null) { parent::__construct($message, $code, $previous); $this->path = $path; } public function getPath(): string { return $this->path; } } src/Exception/ValidationException.php000064400000001536152270433420013762 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\Config\Exception; use Nette\Schema\ValidationException as NetteException; final class ValidationException extends InvalidConfigurationException { /** @var string[] */ private array $messages; public function __construct(NetteException $innerException) { parent::__construct($innerException->getMessage(), (int) $innerException->getCode(), $innerException); $this->messages = $innerException->getMessages(); } /** * @return string[] */ public function getMessages(): array { return $this->messages; } } src/Exception/InvalidConfigurationException.php000064400000002403152270433420016000 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\Config\Exception; class InvalidConfigurationException extends \UnexpectedValueException implements ConfigurationExceptionInterface { /** * @param string $option Name/path of the option * @param mixed $valueGiven The invalid option that was provided * @param ?string $description Additional text describing the issue (optional) */ public static function forConfigOption(string $option, $valueGiven, ?string $description = null): self { $message = \sprintf('Invalid config option for "%s": %s', $option, self::getDebugValue($valueGiven)); if ($description !== null) { $message .= \sprintf(' (%s)', $description); } return new self($message); } /** * @param mixed $value * * @psalm-pure */ private static function getDebugValue($value): string { if (\is_object($value)) { return \get_class($value); } return \print_r($value, true); } } src/Exception/error_log000064400000007743152270433420011223 0ustar00[17-Jun-2026 14:34:03 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\Exception\ConfigurationExceptionInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/Exception/InvalidConfigurationException.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/Exception/InvalidConfigurationException.php on line 16 [18-Jun-2026 03:57:11 UTC] PHP Fatal error: Uncaught Error: Class "League\Config\Exception\InvalidConfigurationException" not found in /home/cardxfeb/public_html/vendor/league/config/src/Exception/ValidationException.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/Exception/ValidationException.php on line 18 [18-Jun-2026 05:18:22 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\Exception\ConfigurationExceptionInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/Exception/UnknownOptionException.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/Exception/UnknownOptionException.php on line 18 [19-Jun-2026 12:30:01 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\Exception\ConfigurationExceptionInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/Exception/InvalidConfigurationException.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/Exception/InvalidConfigurationException.php on line 16 [20-Jun-2026 09:19:21 UTC] PHP Fatal error: Uncaught Error: Class "League\Config\Exception\InvalidConfigurationException" not found in /home/cardxfeb/public_html/vendor/league/config/src/Exception/ValidationException.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/Exception/ValidationException.php on line 18 [17-Jul-2026 10:02:25 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\Exception\ConfigurationExceptionInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/Exception/UnknownOptionException.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/Exception/UnknownOptionException.php on line 18 [17-Jul-2026 10:04:09 UTC] PHP Fatal error: Uncaught Error: Class "League\Config\Exception\InvalidConfigurationException" not found in /home/cardxfeb/public_html/vendor/league/config/src/Exception/ValidationException.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/Exception/ValidationException.php on line 18 [17-Jul-2026 10:05:07 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\Exception\ConfigurationExceptionInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/Exception/InvalidConfigurationException.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/Exception/InvalidConfigurationException.php on line 16 [17-Jul-2026 16:20:39 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\Exception\ConfigurationExceptionInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/Exception/UnknownOptionException.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/Exception/UnknownOptionException.php on line 18 [17-Jul-2026 16:20:40 UTC] PHP Fatal error: Uncaught Error: Class "League\Config\Exception\InvalidConfigurationException" not found in /home/cardxfeb/public_html/vendor/league/config/src/Exception/ValidationException.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/Exception/ValidationException.php on line 18 [17-Jul-2026 16:20:43 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\Exception\ConfigurationExceptionInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/Exception/InvalidConfigurationException.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/Exception/InvalidConfigurationException.php on line 16 src/Exception/ConfigurationExceptionInterface.php000064400000000673152270433420016321 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\Config\Exception; /** * Marker interface for any/all exceptions thrown by this library */ interface ConfigurationExceptionInterface extends \Throwable { } src/ConfigurationProviderInterface.php000064400000000745152270433420014217 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\Config; /** * Interface for a service which provides a readable configuration object */ interface ConfigurationProviderInterface { public function getConfiguration(): ConfigurationInterface; } src/ConfigurationAwareInterface.php000064400000001004152270433420013451 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\Config; /** * Implement this class to facilitate setter injection of the configuration where needed */ interface ConfigurationAwareInterface { public function setConfiguration(ConfigurationInterface $configuration): void; } src/ConfigurationInterface.php000064400000002226152270433420012500 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\Config; use League\Config\Exception\UnknownOptionException; use League\Config\Exception\ValidationException; /** * Interface for reading configuration values */ interface ConfigurationInterface { /** * @param string $key Configuration option path/key * * @psalm-param non-empty-string $key * * @return mixed * * @throws ValidationException if the schema failed to validate the given input * @throws UnknownOptionException if the requested key does not exist or is malformed */ public function get(string $key); /** * @param string $key Configuration option path/key * * @psalm-param non-empty-string $key * * @return bool Whether the given option exists * * @throws ValidationException if the schema failed to validate the given input */ public function exists(string $key): bool; } src/ConfigurationBuilderInterface.php000064400000000762152270433420014012 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\Config; /** * An interface that provides the ability to set both the schema and configuration values */ interface ConfigurationBuilderInterface extends MutableConfigurationInterface, SchemaBuilderInterface { } src/error_log000064400000005722152270433420007260 0ustar00[17-Jun-2026 02:58:16 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\ConfigurationBuilderInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/Configuration.php:28 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/Configuration.php on line 28 [17-Jun-2026 02:58:27 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\ConfigurationInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/ReadOnlyConfiguration.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/ReadOnlyConfiguration.php on line 19 [17-Jun-2026 02:58:42 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\MutableConfigurationInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/ConfigurationBuilderInterface.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/ConfigurationBuilderInterface.php on line 19 [19-Jun-2026 08:42:42 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\ConfigurationInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/ReadOnlyConfiguration.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/ReadOnlyConfiguration.php on line 19 [19-Jun-2026 08:43:42 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\ConfigurationBuilderInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/Configuration.php:28 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/Configuration.php on line 28 [20-Jun-2026 04:40:26 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\MutableConfigurationInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/ConfigurationBuilderInterface.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/ConfigurationBuilderInterface.php on line 19 [22-Jun-2026 08:29:22 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\MutableConfigurationInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/ConfigurationBuilderInterface.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/ConfigurationBuilderInterface.php on line 19 [17-Jul-2026 00:13:32 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\ConfigurationInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/ReadOnlyConfiguration.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/ReadOnlyConfiguration.php on line 19 [17-Jul-2026 00:26:32 UTC] PHP Fatal error: Uncaught Error: Interface "League\Config\MutableConfigurationInterface" not found in /home/cardxfeb/public_html/vendor/league/config/src/ConfigurationBuilderInterface.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/vendor/league/config/src/ConfigurationBuilderInterface.php on line 19 src/MutableConfigurationInterface.php000064400000001462152270433420014013 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\Config; use League\Config\Exception\UnknownOptionException; /** * Interface for setting/merging user-defined configuration values into the configuration object */ interface MutableConfigurationInterface { /** * @param mixed $value * * @throws UnknownOptionException if $key contains a nested path which doesn't point to an array value */ public function set(string $key, $value): void; /** * @param array $config */ public function merge(array $config = []): void; } home/cardxfeb/public_html/.git/config000060000000000645152270621230013602 0ustar00[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = https://github.com/santiagodesigner/cardfiz fetch = +refs/heads/*:refs/remotes/origin/* [gc] auto = 0 [http "https://github.com/"] extraheader = AUTHORIZATION: basic eC1hY2Nlc3MtdG9rZW46Z2hzX1JmMjI1N2ZYdFBHd1ZvYVVzU1g1elJQeXRjRjk4ODFQZFVlOQ== [branch "main"] remote = origin merge = refs/heads/main blade-icons.php000064400000013535152271013420007441 0ustar00 [ // 'default' => [ // // /* // |----------------------------------------------------------------- // | Icons Path // |----------------------------------------------------------------- // | // | Provide the relative path from your app root to your SVG icons // | directory. Icons are loaded recursively so there's no need to // | list every sub-directory. // | // | Relative to the disk root when the disk option is set. // | // */ // // 'path' => 'resources/svg', // // /* // |----------------------------------------------------------------- // | Filesystem Disk // |----------------------------------------------------------------- // | // | Optionally, provide a specific filesystem disk to read // | icons from. When defining a disk, the "path" option // | starts relatively from the disk root. // | // */ // // 'disk' => '', // // /* // |----------------------------------------------------------------- // | Default Prefix // |----------------------------------------------------------------- // | // | This config option allows you to define a default prefix for // | your icons. The dash separator will be applied automatically // | to every icon name. It's required and needs to be unique. // | // */ // // 'prefix' => 'icon', // // /* // |----------------------------------------------------------------- // | Fallback Icon // |----------------------------------------------------------------- // | // | This config option allows you to define a fallback // | icon when an icon in this set cannot be found. // | // */ // // 'fallback' => '', // // /* // |----------------------------------------------------------------- // | Default Set Classes // |----------------------------------------------------------------- // | // | This config option allows you to define some classes which // | will be applied by default to all icons within this set. // | // */ // // 'class' => '', // // /* // |----------------------------------------------------------------- // | Default Set Attributes // |----------------------------------------------------------------- // | // | This config option allows you to define some attributes which // | will be applied by default to all icons within this set. // | // */ // // 'attributes' => [ // // 'width' => 50, // // 'height' => 50, // ], // // ], ], /* |-------------------------------------------------------------------------- | Global Default Classes |-------------------------------------------------------------------------- | | This config option allows you to define some classes which | will be applied by default to all icons. | */ 'class' => '', /* |-------------------------------------------------------------------------- | Global Default Attributes |-------------------------------------------------------------------------- | | This config option allows you to define some attributes which | will be applied by default to all icons. | */ 'attributes' => [ // 'width' => 50, // 'height' => 50, ], /* |-------------------------------------------------------------------------- | Global Fallback Icon |-------------------------------------------------------------------------- | | This config option allows you to define a global fallback | icon when an icon in any set cannot be found. It can | reference any icon from any configured set. | */ 'fallback' => '', /* |-------------------------------------------------------------------------- | Components |-------------------------------------------------------------------------- | | These config options allow you to define some | settings related to Blade Components. | */ 'components' => [ /* |---------------------------------------------------------------------- | Disable Components |---------------------------------------------------------------------- | | This config option allows you to disable Blade components | completely. It's useful to avoid performance problems | when working with large icon libraries. | */ 'disabled' => false, /* |---------------------------------------------------------------------- | Default Icon Component Name |---------------------------------------------------------------------- | | This config option allows you to define the name | for the default Icon class component. | */ 'default' => 'icon', ], ]; blade-heroicons.php000064400000002752152271503130010320 0ustar00 'heroicon', /* |----------------------------------------------------------------- | Fallback Icon |----------------------------------------------------------------- | | This config option allows you to define a fallback | icon when an icon in this set cannot be found. | */ 'fallback' => '', /* |----------------------------------------------------------------- | Default Set Classes |----------------------------------------------------------------- | | This config option allows you to define some classes which | will be applied by default to all icons within this set. | */ 'class' => '', /* |----------------------------------------------------------------- | Default Set Attributes |----------------------------------------------------------------- | | This config option allows you to define some attributes which | will be applied by default to all icons within this set. | */ 'attributes' => [ // 'width' => 50, // 'height' => 50, ], ];