diff --git a/app/Abstracts/Listeners/Report.php b/app/Abstracts/Listeners/Report.php index e5a02b2cb..44ac1e195 100644 --- a/app/Abstracts/Listeners/Report.php +++ b/app/Abstracts/Listeners/Report.php @@ -150,7 +150,7 @@ abstract class Report public function applySearchStringFilter($event) { - $input = request('search'); + $input = request('search', ''); // Remove year as it's handled based on financial start $search_year = 'year:' . $this->getSearchStringValue('year', '', $input); diff --git a/app/Abstracts/Widget.php b/app/Abstracts/Widget.php index a5d8eccc9..80f8bc689 100644 --- a/app/Abstracts/Widget.php +++ b/app/Abstracts/Widget.php @@ -17,7 +17,7 @@ abstract class Widget public $default_name = ''; public $default_settings = [ - 'width' => 'w-full lg:w-2/4 px-12 my-8', + 'width' => 'w-full lg:w-2/4 lg:px-12 my-8', ]; public $description = ''; diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index b238b099e..7878ebe75 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -48,6 +48,20 @@ class Handler extends ExceptionHandler 'password_confirmation', ]; + /** + * Register the exception handling callbacks for the application. + * + * @return void + */ + public function register() + { + $this->reportable(function (Throwable $e) { + if (config('logging.default') == 'bugsnag') { + call_user_func(config('bugsnag.before_send'), $e); + } + }); + } + /** * Report or log an exception. * diff --git a/app/Exceptions/Trackers/Bugsnag.php b/app/Exceptions/Trackers/Bugsnag.php new file mode 100644 index 000000000..818c39ec2 --- /dev/null +++ b/app/Exceptions/Trackers/Bugsnag.php @@ -0,0 +1,29 @@ +setAppVersion(version('short')); + + app('bugsnag')->registerCallback(function ($report) { + $report->setMetaData([ + 'akaunting' => [ + 'company_id' => (string) company_id(), + 'locale' => (string) app()->getLocale(), + 'timezone' => (string) config('app.timezone'), + 'route_name' => (string) static::getRouteName(), + ] + ]); + }); + } + + public static function getRouteName(): ?string + { + return request()->route()?->getName(); + } +} diff --git a/app/Exceptions/Trackers/Sentry.php b/app/Exceptions/Trackers/Sentry.php new file mode 100644 index 000000000..8bad77c3b --- /dev/null +++ b/app/Exceptions/Trackers/Sentry.php @@ -0,0 +1,76 @@ +setRelease(version('short')); + + $event->setTags([ + 'company_id' => (string) company_id(), + 'locale' => (string) app()->getLocale(), + 'timezone' => (string) config('app.timezone'), + 'app_type' => (string) static::getAppType(), + 'route_name' => (string) static::getRouteName(), + ]); + + return $event; + } + + public static function tracesSampler(SamplingContext $context): float + { + if (static::shouldFilterAgent()) { + return 0.0; + } + + return config('sentry.traces_sample_rate'); + } + + public static function shouldFilterAgent(): bool + { + $user_agent = request()->userAgent(); + + $filter_agents = explode(',', env('SENTRY_TRACES_FILTER_AGENTS')); + + foreach ($filter_agents as $filter_agent) { + if (! Str::contains($user_agent, $filter_agent)) { + continue; + } + + return true; + } + + return false; + } + + public static function getAppType(): string + { + $hostname = gethostname(); + + if (Str::contains($hostname, '-queue-')) { + $app_type = 'queue'; + } elseif (Str::contains($hostname, '-cron-')) { + $app_type = 'cron'; + } elseif (request()->isApi()) { + $app_type = 'api'; + } elseif (app()->runningInConsole()) { + $app_type = 'console'; + } else { + $app_type = 'ui'; + } + + return $app_type; + } + + public static function getRouteName(): ?string + { + return request()->route()?->getName(); + } +} diff --git a/app/Http/Controllers/Settings/Categories.php b/app/Http/Controllers/Settings/Categories.php index 915ea8f77..204ad1d18 100644 --- a/app/Http/Controllers/Settings/Categories.php +++ b/app/Http/Controllers/Settings/Categories.php @@ -195,7 +195,7 @@ class Categories extends Controller flash($message)->success(); } else { - $response['redirect'] = route('categories.edit', $category_id); + $response['redirect'] = route('categories.edit', $category->id); $message = $response['message']; diff --git a/app/Jobs/Banking/CreateReconciliation.php b/app/Jobs/Banking/CreateReconciliation.php index 595446798..396e58809 100644 --- a/app/Jobs/Banking/CreateReconciliation.php +++ b/app/Jobs/Banking/CreateReconciliation.php @@ -8,16 +8,24 @@ use App\Interfaces\Job\HasSource; use App\Interfaces\Job\ShouldCreate; use App\Models\Banking\Reconciliation; use App\Models\Banking\Transaction; +use App\Utilities\Date; class CreateReconciliation extends Job implements HasOwner, HasSource, ShouldCreate { public function handle(): Reconciliation { \DB::transaction(function () { + $started_at = Date::parse($this->request->get('started_at'))->startOfDay(); + $ended_at = Date::parse($this->request->get('ended_at'))->endOfDay(); + $reconcile = (int) $this->request->get('reconcile'); $transactions = $this->request->get('transactions'); - $this->request->merge(['reconciled' => $reconcile]); + $this->request->merge([ + 'started_at' => $started_at, + 'ended_at' => $ended_at, + 'reconciled' => $reconcile, + ]); $this->model = Reconciliation::create($this->request->all()); diff --git a/app/Models/Banking/Reconciliation.php b/app/Models/Banking/Reconciliation.php index c8d2fd87f..2026dc95d 100644 --- a/app/Models/Banking/Reconciliation.php +++ b/app/Models/Banking/Reconciliation.php @@ -18,7 +18,7 @@ class Reconciliation extends Model * * @var array */ - protected $fillable = ['company_id', 'account_id', 'started_at', 'ended_at', 'closing_balance', 'reconciled', 'created_from', 'created_by']; + protected $fillable = ['company_id', 'account_id', 'started_at', 'ended_at', 'closing_balance', 'transactions', 'reconciled', 'created_from', 'created_by']; /** * The attributes that should be cast. diff --git a/app/Models/Banking/Transaction.php b/app/Models/Banking/Transaction.php index c2fca7d0e..0c4cf8e33 100644 --- a/app/Models/Banking/Transaction.php +++ b/app/Models/Banking/Transaction.php @@ -565,7 +565,7 @@ class Transaction extends Model 'permission' => 'read-banking-transactions', 'attributes' => [ 'id' => 'index-line-actions-send-email-' . $this->type . '-' . $this->id, - '@click' => 'onEmail("' . route('modals.transactions.emails.create', $this->id) . '")', + '@click' => 'onSendEmail("' . route('modals.transactions.emails.create', $this->id) . '")', ], ]; } diff --git a/app/Models/Document/Document.php b/app/Models/Document/Document.php index 5dd405fc2..9928ff50b 100644 --- a/app/Models/Document/Document.php +++ b/app/Models/Document/Document.php @@ -488,6 +488,20 @@ class Document extends Model return $actions; } + if (app('mobile-detect')->isMobile()) { + try { + $actions[] = [ + 'title' => trans('general.show'), + 'icon' => 'visibility', + 'url' => route($prefix . '.show', $this->id), + 'permission' => 'read-' . $group . '-' . $permission_prefix, + 'attributes' => [ + 'id' => 'index-more-actions-show-' . $this->id, + ], + ]; + } catch (\Exception $e) {} + } + try { if (! $this->reconciled) { $actions[] = [ @@ -524,7 +538,7 @@ class Document extends Model 'permission' => 'read-' . $group . '-' . $permission_prefix, 'attributes' => [ 'id' => 'index-line-actions-payment-' . $this->type . '-' . $this->id, - '@click' => 'onPayment("' . $this->id . '")', + '@click' => 'onAddPayment("' . route('modals.documents.document.transactions.create', $this->id) . '")', ], ]; } catch (\Exception $e) {} @@ -601,7 +615,7 @@ class Document extends Model 'permission' => 'read-' . $group . '-' . $permission_prefix, 'attributes' => [ 'id' => 'index-line-actions-send-email-' . $this->type . '-' . $this->id, - '@click' => 'onEmail("' . route('modals.'. $prefix . '.emails.create', $this->id) . '")', + '@click' => 'onSendEmail("' . route('modals.'. $prefix . '.emails.create', $this->id) . '")', ], ]; } diff --git a/app/Traits/Charts.php b/app/Traits/Charts.php index 31e69e8bd..bd5474395 100644 --- a/app/Traits/Charts.php +++ b/app/Traits/Charts.php @@ -106,6 +106,11 @@ trait Charts $percent_position = $position ?: setting('localisation.percent_position'); switch ($type) { + case 'integer': + $label = new Raw("function(value) { + return value + }"); + break; case 'percent': $label = new Raw("function(value) { " . ($percent_position == 'right' ? "return value + '%';" : "return '%' + value;") . " diff --git a/app/Traits/SearchString.php b/app/Traits/SearchString.php index 1acded948..01b01488d 100644 --- a/app/Traits/SearchString.php +++ b/app/Traits/SearchString.php @@ -8,16 +8,12 @@ trait SearchString * Get the value of a name in search string * Example: search=type:customer year:2020 account_id:20 * Example: issued_at>=2021-02-01 issued_at<=2021-02-10 account_id:49 - * - * @return string|array */ - public function getSearchStringValue($name, $default = '', $input = null) + public function getSearchStringValue(string $name, string $default = '', string $input = ''): string|array { $value = $default; - if (is_null($input)) { - $input = request('search'); - } + $input = $input ?: request('search', ''); // $manager = $this->getSearchStringManager(); // $parsed = $manager->parse($input); @@ -30,14 +26,14 @@ trait SearchString if (empty($variable[0]) || ($variable[0] != $name) || empty($variable[1])) { continue; } - + if (strpos($column, ':')) { $value = $variable[1]; break; } - if (!is_array($value)) { + if (! is_array($value)) { $value = []; } diff --git a/app/Widgets/CashFlow.php b/app/Widgets/CashFlow.php index 5b8a37a55..91a3a7196 100644 --- a/app/Widgets/CashFlow.php +++ b/app/Widgets/CashFlow.php @@ -17,7 +17,7 @@ class CashFlow extends Widget public $default_name = 'widgets.cash_flow'; public $default_settings = [ - 'width' => 'w-full my-8 px-12', + 'width' => 'w-full my-8 lg:px-12', ]; public $description = 'widgets.description.cash_flow'; diff --git a/composer.json b/composer.json index a91b7161c..708d9e036 100644 --- a/composer.json +++ b/composer.json @@ -44,6 +44,7 @@ "barryvdh/laravel-dompdf": "^2.0", "barryvdh/laravel-ide-helper": "^2.9", "bkwld/cloner": "^3.10", + "bugsnag/bugsnag-laravel": "^2.24", "doctrine/dbal": "^3.1", "fruitcake/laravel-cors": "^2.0", "genealabs/laravel-model-caching": "0.12.*", @@ -67,6 +68,7 @@ "plank/laravel-mediable": "^5.4", "riverskies/laravel-mobile-detect": "^1.3", "santigarcor/laratrust": "^7.0", + "sentry/sentry-laravel": "^3.0", "simple-icons/simple-icons": "^6.0", "simshaun/recurr": "^5.0", "staudenmeir/belongs-to-through": "^2.12", diff --git a/composer.lock b/composer.lock index 4ca2bafeb..f1363e19a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "2a93789b0f787bd0efe26fa564af486f", + "content-hash": "8c3e839574009ba27f0d0cdf0b8d8f0c", "packages": [ { "name": "akaunting/laravel-apexcharts", @@ -907,16 +907,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.238.3", + "version": "3.239.0", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "14fb64c934614ea5a52c9931189f687f30b6ba3b" + "reference": "33ae76381b77a1a2580817996dcc7b9e931ae5f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/14fb64c934614ea5a52c9931189f687f30b6ba3b", - "reference": "14fb64c934614ea5a52c9931189f687f30b6ba3b", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/33ae76381b77a1a2580817996dcc7b9e931ae5f4", + "reference": "33ae76381b77a1a2580817996dcc7b9e931ae5f4", "shasum": "" }, "require": { @@ -995,9 +995,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.238.3" + "source": "https://github.com/aws/aws-sdk-php/tree/3.239.0" }, - "time": "2022-10-07T18:16:40+00:00" + "time": "2022-10-18T18:17:00+00:00" }, { "name": "balping/json-raw-encoder", @@ -1467,6 +1467,189 @@ ], "time": "2022-08-10T22:54:19+00:00" }, + { + "name": "bugsnag/bugsnag", + "version": "v3.28.0", + "source": { + "type": "git", + "url": "https://github.com/bugsnag/bugsnag-php.git", + "reference": "44fc93cac95e44741e0a5f9100f2a0958372e792" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bugsnag/bugsnag-php/zipball/44fc93cac95e44741e0a5f9100f2a0958372e792", + "reference": "44fc93cac95e44741e0a5f9100f2a0958372e792", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "guzzlehttp/guzzle": "^5.0|^6.0|^7.0", + "php": ">=5.5" + }, + "require-dev": { + "guzzlehttp/psr7": "^1.3", + "mtdowling/burgomaster": "dev-master#72151eddf5f0cf101502b94bf5031f9c53501a04", + "php-mock/php-mock-phpunit": "^1.1|^2.1", + "phpunit/phpunit": "^4.8.36|^7.5.15|^9.3.10", + "sebastian/version": ">=1.0.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.20-dev" + } + }, + "autoload": { + "psr-4": { + "Bugsnag\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "James Smith", + "email": "notifiers@bugsnag.com", + "homepage": "https://bugsnag.com" + } + ], + "description": "Official Bugsnag notifier for PHP applications.", + "homepage": "https://github.com/bugsnag/bugsnag-php", + "keywords": [ + "bugsnag", + "errors", + "exceptions", + "logging", + "tracking" + ], + "support": { + "issues": "https://github.com/bugsnag/bugsnag-php/issues", + "source": "https://github.com/bugsnag/bugsnag-php/tree/v3.28.0" + }, + "time": "2022-05-18T14:13:46+00:00" + }, + { + "name": "bugsnag/bugsnag-laravel", + "version": "v2.24.0", + "source": { + "type": "git", + "url": "https://github.com/bugsnag/bugsnag-laravel.git", + "reference": "1853d8335e2c29412abd14e3522fbca0a4351d84" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bugsnag/bugsnag-laravel/zipball/1853d8335e2c29412abd14e3522fbca0a4351d84", + "reference": "1853d8335e2c29412abd14e3522fbca0a4351d84", + "shasum": "" + }, + "require": { + "bugsnag/bugsnag": "^3.28.0", + "bugsnag/bugsnag-psr-logger": "^1.4|^2.0", + "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0|^9.0", + "illuminate/support": "^5.0|^6.0|^7.0|^8.0|^9.0", + "monolog/monolog": "^1.12|^2.0", + "php": ">=5.5" + }, + "require-dev": { + "orchestra/testbench": "^3.1|^4.0|^5.0|^6.0|^7.0", + "phpunit/phpunit": "^4.8.36|^6.3.1|^7.5.15|^8.3.5|^9.3.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.18-dev" + } + }, + "autoload": { + "psr-4": { + "Bugsnag\\BugsnagLaravel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "James Smith", + "email": "notifiers@bugsnag.com" + } + ], + "description": "Official Bugsnag notifier for Laravel applications.", + "homepage": "https://github.com/bugsnag/bugsnag-laravel", + "keywords": [ + "bugsnag", + "errors", + "exceptions", + "laravel", + "logging", + "tracking" + ], + "support": { + "issues": "https://github.com/bugsnag/bugsnag-laravel/issues", + "source": "https://github.com/bugsnag/bugsnag-laravel/tree/v2.24.0" + }, + "time": "2022-05-20T14:12:51+00:00" + }, + { + "name": "bugsnag/bugsnag-psr-logger", + "version": "v2.0.0", + "source": { + "type": "git", + "url": "https://github.com/bugsnag/bugsnag-psr-logger.git", + "reference": "6c1126e28edcfb7c1da4b492eed883011a09416a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bugsnag/bugsnag-psr-logger/zipball/6c1126e28edcfb7c1da4b492eed883011a09416a", + "reference": "6c1126e28edcfb7c1da4b492eed883011a09416a", + "shasum": "" + }, + "require": { + "bugsnag/bugsnag": "^3.10", + "php": ">=8.0", + "psr/log": "^2.0|^3.0" + }, + "require-dev": { + "graham-campbell/testbench-core": "^1.1", + "mockery/mockery": "^1.3.1", + "phpunit/phpunit": "^9.4.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Bugsnag\\PsrLogger\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "James Smith", + "email": "notifiers@bugsnag.com", + "homepage": "https://bugsnag.com" + } + ], + "description": "Official Bugsnag PHP PSR Logger.", + "homepage": "https://github.com/bugsnag/bugsnag-psr", + "keywords": [ + "bugsnag", + "errors", + "exceptions", + "logging", + "psr", + "tracking" + ], + "support": { + "issues": "https://github.com/bugsnag/bugsnag-psr-logger/issues", + "source": "https://github.com/bugsnag/bugsnag-psr-logger/tree/v2.0.0" + }, + "time": "2022-01-12T11:07:19+00:00" + }, { "name": "clue/stream-filter", "version": "v1.6.0", @@ -1533,6 +1716,82 @@ ], "time": "2022-02-21T13:15:14+00:00" }, + { + "name": "composer/ca-bundle", + "version": "1.3.4", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "69098eca243998b53eed7a48d82dedd28b447cd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/69098eca243998b53eed7a48d82dedd28b447cd5", + "reference": "69098eca243998b53eed7a48d82dedd28b447cd5", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.55", + "psr/log": "^1.0", + "symfony/phpunit-bridge": "^4.2 || ^5", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/ca-bundle/issues", + "source": "https://github.com/composer/ca-bundle/tree/1.3.4" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-10-12T12:08:29+00:00" + }, { "name": "composer/pcre", "version": "3.0.0", @@ -1998,34 +2257,35 @@ }, { "name": "doctrine/event-manager", - "version": "1.1.2", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683" + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/eb2ecf80e3093e8f3c2769ac838e27d8ede8e683", - "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", "shasum": "" }, "require": { + "doctrine/deprecations": "^0.5.3 || ^1", "php": "^7.1 || ^8.0" }, "conflict": { "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "~1.4.10 || ^1.5.4", + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.8", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "vimeo/psalm": "^4.24" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2069,7 +2329,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.2" + "source": "https://github.com/doctrine/event-manager/tree/1.2.0" }, "funding": [ { @@ -2085,7 +2345,7 @@ "type": "tidelift" } ], - "time": "2022-07-27T22:18:11+00:00" + "time": "2022-10-12T20:51:15+00:00" }, { "name": "doctrine/inflector", @@ -4085,6 +4345,64 @@ "abandoned": true, "time": "2017-01-10T10:39:54+00:00" }, + { + "name": "http-interop/http-factory-guzzle", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/http-interop/http-factory-guzzle.git", + "reference": "8f06e92b95405216b237521cc64c804dd44c4a81" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/8f06e92b95405216b237521cc64c804dd44c4a81", + "reference": "8f06e92b95405216b237521cc64c804dd44c4a81", + "shasum": "" + }, + "require": { + "guzzlehttp/psr7": "^1.7||^2.0", + "php": ">=7.3", + "psr/http-factory": "^1.0" + }, + "provide": { + "psr/http-factory-implementation": "^1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^9.5" + }, + "suggest": { + "guzzlehttp/psr7": "Includes an HTTP factory starting in version 2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Http\\Factory\\Guzzle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "An HTTP Factory using Guzzle PSR7", + "keywords": [ + "factory", + "http", + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/http-interop/http-factory-guzzle/issues", + "source": "https://github.com/http-interop/http-factory-guzzle/tree/1.2.0" + }, + "time": "2021-07-21T13:50:14+00:00" + }, { "name": "intervention/image", "version": "2.7.2", @@ -4288,6 +4606,65 @@ }, "time": "2022-10-05T21:52:44+00:00" }, + { + "name": "jean85/pretty-package-versions", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.17", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^0.12.66", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "vimeo/psalm": "^4.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + }, + "time": "2021-10-08T21:21:46+00:00" + }, { "name": "jenssegers/agent", "version": "v2.6.4", @@ -4481,16 +4858,16 @@ }, { "name": "laravel/framework", - "version": "v9.35.1", + "version": "v9.36.2", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "79aed20f54b6ab75f926bf7d0dd7a5043ceb774a" + "reference": "0bcd350eec1974c9f912f129368587ef7e43722b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/79aed20f54b6ab75f926bf7d0dd7a5043ceb774a", - "reference": "79aed20f54b6ab75f926bf7d0dd7a5043ceb774a", + "url": "https://api.github.com/repos/laravel/framework/zipball/0bcd350eec1974c9f912f129368587ef7e43722b", + "reference": "0bcd350eec1974c9f912f129368587ef7e43722b", "shasum": "" }, "require": { @@ -4663,7 +5040,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-10-11T17:30:47+00:00" + "time": "2022-10-18T18:46:20+00:00" }, { "name": "laravel/sanctum", @@ -5242,16 +5619,16 @@ }, { "name": "league/flysystem", - "version": "3.5.2", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "c73c4eb31f2e883b3897ab5591aa2dbc48112433" + "reference": "60f3760352fe08e918bc3b1acae4e91af092ebe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/c73c4eb31f2e883b3897ab5591aa2dbc48112433", - "reference": "c73c4eb31f2e883b3897ab5591aa2dbc48112433", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/60f3760352fe08e918bc3b1acae4e91af092ebe1", + "reference": "60f3760352fe08e918bc3b1acae4e91af092ebe1", "shasum": "" }, "require": { @@ -5313,7 +5690,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.5.2" + "source": "https://github.com/thephpleague/flysystem/tree/3.9.0" }, "funding": [ { @@ -5329,25 +5706,25 @@ "type": "tidelift" } ], - "time": "2022-09-23T18:59:16+00:00" + "time": "2022-10-18T21:02:43+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "3.5.0", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "adb6633f325c934c15a099c363dc5362bdcb07a2" + "reference": "192c0e7f36fe4e5a79cce94f8359076630b641f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/adb6633f325c934c15a099c363dc5362bdcb07a2", - "reference": "adb6633f325c934c15a099c363dc5362bdcb07a2", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/192c0e7f36fe4e5a79cce94f8359076630b641f8", + "reference": "192c0e7f36fe4e5a79cce94f8359076630b641f8", "shasum": "" }, "require": { "aws/aws-sdk-php": "^3.132.4", - "league/flysystem": "^3.0.0", + "league/flysystem": "^3.8.0", "league/mime-type-detection": "^1.0.0", "php": "^8.0.2" }, @@ -5383,7 +5760,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", - "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.5.0" + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.8.0" }, "funding": [ { @@ -5399,7 +5776,7 @@ "type": "tidelift" } ], - "time": "2022-09-17T21:00:35+00:00" + "time": "2022-10-18T06:40:06+00:00" }, { "name": "league/mime-type-detection", @@ -5723,16 +6100,16 @@ }, { "name": "maatwebsite/excel", - "version": "3.1.43", + "version": "3.1.44", "source": { "type": "git", "url": "https://github.com/SpartnerNL/Laravel-Excel.git", - "reference": "3c5b95478fb6f76b9a6ab527d54afbb3afbda611" + "reference": "289c3320982510dacfe0dd00de68061a2b7f4a43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/3c5b95478fb6f76b9a6ab527d54afbb3afbda611", - "reference": "3c5b95478fb6f76b9a6ab527d54afbb3afbda611", + "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/289c3320982510dacfe0dd00de68061a2b7f4a43", + "reference": "289c3320982510dacfe0dd00de68061a2b7f4a43", "shasum": "" }, "require": { @@ -5786,7 +6163,7 @@ ], "support": { "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues", - "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.43" + "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.44" }, "funding": [ { @@ -5798,7 +6175,7 @@ "type": "github" } ], - "time": "2022-10-03T11:50:29+00:00" + "time": "2022-10-14T20:01:10+00:00" }, { "name": "maennchen/zipstream-php", @@ -6848,16 +7225,16 @@ }, { "name": "nunomaduro/termwind", - "version": "v1.14.0", + "version": "v1.14.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "10065367baccf13b6e30f5e9246fa4f63a79eb1d" + "reference": "86fc30eace93b9b6d4c844ba6de76db84184e01b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/10065367baccf13b6e30f5e9246fa4f63a79eb1d", - "reference": "10065367baccf13b6e30f5e9246fa4f63a79eb1d", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/86fc30eace93b9b6d4c844ba6de76db84184e01b", + "reference": "86fc30eace93b9b6d4c844ba6de76db84184e01b", "shasum": "" }, "require": { @@ -6914,7 +7291,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.14.0" + "source": "https://github.com/nunomaduro/termwind/tree/v1.14.1" }, "funding": [ { @@ -6930,7 +7307,84 @@ "type": "github" } ], - "time": "2022-08-01T11:03:24+00:00" + "time": "2022-10-17T15:20:29+00:00" + }, + { + "name": "nyholm/psr7", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/Nyholm/psr7.git", + "reference": "f734364e38a876a23be4d906a2a089e1315be18a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/f734364e38a876a23be4d906a2a089e1315be18a", + "reference": "f734364e38a876a23be4d906a2a089e1315be18a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "php-http/message-factory": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.9", + "php-http/psr7-integration-tests": "^1.0", + "phpunit/phpunit": "^7.5 || 8.5 || 9.4", + "symfony/error-handler": "^4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "Nyholm\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + }, + { + "name": "Martijn van der Ven", + "email": "martijn@vanderven.se" + } + ], + "description": "A fast PHP7 implementation of PSR-7", + "homepage": "https://tnyholm.se", + "keywords": [ + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/Nyholm/psr7/issues", + "source": "https://github.com/Nyholm/psr7/tree/1.5.1" + }, + "funding": [ + { + "url": "https://github.com/Zegnat", + "type": "github" + }, + { + "url": "https://github.com/nyholm", + "type": "github" + } + ], + "time": "2022-06-22T07:13:36+00:00" }, { "name": "omnipay/common", @@ -7229,6 +7683,81 @@ }, "time": "2022-09-06T12:16:56+00:00" }, + { + "name": "php-http/client-common", + "version": "2.6.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/client-common.git", + "reference": "45db684cd4e186dcdc2b9c06b22970fe123796c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/client-common/zipball/45db684cd4e186dcdc2b9c06b22970fe123796c0", + "reference": "45db684cd4e186dcdc2b9c06b22970fe123796c0", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/httplug": "^2.0", + "php-http/message": "^1.6", + "php-http/message-factory": "^1.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0", + "symfony/polyfill-php80": "^1.17" + }, + "require-dev": { + "doctrine/instantiator": "^1.1", + "guzzlehttp/psr7": "^1.4", + "nyholm/psr7": "^1.2", + "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", + "phpspec/prophecy": "^1.10.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3" + }, + "suggest": { + "ext-json": "To detect JSON responses with the ContentTypePlugin", + "ext-libxml": "To detect XML responses with the ContentTypePlugin", + "php-http/cache-plugin": "PSR-6 Cache plugin", + "php-http/logger-plugin": "PSR-3 Logger plugin", + "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Client\\Common\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Common HTTP Client implementations and tools for HTTPlug", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "common", + "http", + "httplug" + ], + "support": { + "issues": "https://github.com/php-http/client-common/issues", + "source": "https://github.com/php-http/client-common/tree/2.6.0" + }, + "time": "2022-09-29T09:59:43+00:00" + }, { "name": "php-http/discovery", "version": "1.14.3", @@ -7660,25 +8189,30 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.1", + "version": "1.6.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d", + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { "ext-tokenizer": "*", - "psalm/phar": "^4.8" + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { @@ -7704,9 +8238,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2" }, - "time": "2022-03-15T21:29:03+00:00" + "time": "2022-10-14T12:47:21+00:00" }, { "name": "phpoffice/phpspreadsheet", @@ -8931,6 +9465,260 @@ ], "time": "2022-03-04T15:28:43+00:00" }, + { + "name": "sentry/sdk", + "version": "3.3.0", + "source": { + "type": "git", + "url": "https://github.com/getsentry/sentry-php-sdk.git", + "reference": "d0678fc7274dbb03046ed05cb24eb92945bedf8e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/d0678fc7274dbb03046ed05cb24eb92945bedf8e", + "reference": "d0678fc7274dbb03046ed05cb24eb92945bedf8e", + "shasum": "" + }, + "require": { + "http-interop/http-factory-guzzle": "^1.0", + "sentry/sentry": "^3.9", + "symfony/http-client": "^4.3|^5.0|^6.0" + }, + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sentry", + "email": "accounts@sentry.io" + } + ], + "description": "This is a metapackage shipping sentry/sentry with a recommended HTTP client.", + "homepage": "http://sentry.io", + "keywords": [ + "crash-reporting", + "crash-reports", + "error-handler", + "error-monitoring", + "log", + "logging", + "sentry" + ], + "support": { + "issues": "https://github.com/getsentry/sentry-php-sdk/issues", + "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.3.0" + }, + "funding": [ + { + "url": "https://sentry.io/", + "type": "custom" + }, + { + "url": "https://sentry.io/pricing/", + "type": "custom" + } + ], + "time": "2022-10-11T09:05:00+00:00" + }, + { + "name": "sentry/sentry", + "version": "3.9.1", + "source": { + "type": "git", + "url": "https://github.com/getsentry/sentry-php.git", + "reference": "45b618b2265d11bc9b5a15f31bcc573a2dc3b956" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/45b618b2265d11bc9b5a15f31bcc573a2dc3b956", + "reference": "45b618b2265d11bc9b5a15f31bcc573a2dc3b956", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "guzzlehttp/promises": "^1.4", + "guzzlehttp/psr7": "^1.8.4|^2.1.1", + "jean85/pretty-package-versions": "^1.5|^2.0.4", + "php": "^7.2|^8.0", + "php-http/async-client-implementation": "^1.0", + "php-http/client-common": "^1.5|^2.0", + "php-http/discovery": "^1.11", + "php-http/httplug": "^1.1|^2.0", + "php-http/message": "^1.5", + "psr/http-factory": "^1.0", + "psr/http-message-implementation": "^1.0", + "psr/log": "^1.0|^2.0|^3.0", + "symfony/options-resolver": "^3.4.43|^4.4.30|^5.0.11|^6.0", + "symfony/polyfill-php80": "^1.17" + }, + "conflict": { + "php-http/client-common": "1.8.0", + "raven/raven": "*" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.19|3.4.*", + "http-interop/http-factory-guzzle": "^1.0", + "monolog/monolog": "^1.6|^2.0|^3.0", + "nikic/php-parser": "^4.10.3", + "php-http/mock-client": "^1.3", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^8.5.14|^9.4", + "symfony/phpunit-bridge": "^5.2|^6.0", + "vimeo/psalm": "^4.17" + }, + "suggest": { + "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.9.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Sentry\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sentry", + "email": "accounts@sentry.io" + } + ], + "description": "A PHP SDK for Sentry (http://sentry.io)", + "homepage": "http://sentry.io", + "keywords": [ + "crash-reporting", + "crash-reports", + "error-handler", + "error-monitoring", + "log", + "logging", + "sentry" + ], + "support": { + "issues": "https://github.com/getsentry/sentry-php/issues", + "source": "https://github.com/getsentry/sentry-php/tree/3.9.1" + }, + "funding": [ + { + "url": "https://sentry.io/", + "type": "custom" + }, + { + "url": "https://sentry.io/pricing/", + "type": "custom" + } + ], + "time": "2022-10-11T09:00:25+00:00" + }, + { + "name": "sentry/sentry-laravel", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/getsentry/sentry-laravel.git", + "reference": "1b4458396b6f4cd0e8a63cfb9f8fc38240da1c86" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/1b4458396b6f4cd0e8a63cfb9f8fc38240da1c86", + "reference": "1b4458396b6f4cd0e8a63cfb9f8fc38240da1c86", + "shasum": "" + }, + "require": { + "illuminate/support": "^6.0 | ^7.0 | ^8.0 | ^9.0", + "nyholm/psr7": "^1.0", + "php": "^7.2 | ^8.0", + "sentry/sdk": "^3.1", + "sentry/sentry": "^3.9", + "symfony/psr-http-message-bridge": "^1.0 | ^2.0" + }, + "conflict": { + "laravel/lumen-framework": "*" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.11", + "laravel/framework": "^6.0 | ^7.0 | ^8.0 | ^9.0", + "mockery/mockery": "^1.3", + "orchestra/testbench": "^4.7 | ^5.1 | ^6.0 | ^7.0", + "phpunit/phpunit": "^8.4 | ^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev", + "dev-2.x": "2.x-dev", + "dev-1.x": "1.x-dev", + "dev-0.x": "0.x-dev" + }, + "laravel": { + "providers": [ + "Sentry\\Laravel\\ServiceProvider", + "Sentry\\Laravel\\Tracing\\ServiceProvider" + ], + "aliases": { + "Sentry": "Sentry\\Laravel\\Facade" + } + } + }, + "autoload": { + "psr-0": { + "Sentry\\Laravel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Sentry", + "email": "accounts@sentry.io" + } + ], + "description": "Laravel SDK for Sentry (https://sentry.io)", + "homepage": "https://sentry.io", + "keywords": [ + "crash-reporting", + "crash-reports", + "error-handler", + "error-monitoring", + "laravel", + "log", + "logging", + "sentry" + ], + "support": { + "issues": "https://github.com/getsentry/sentry-laravel/issues", + "source": "https://github.com/getsentry/sentry-laravel/tree/3.0.0" + }, + "funding": [ + { + "url": "https://sentry.io/", + "type": "custom" + }, + { + "url": "https://sentry.io/pricing/", + "type": "custom" + } + ], + "time": "2022-10-19T08:46:34+00:00" + }, { "name": "simple-icons/simple-icons", "version": "6.23.0", @@ -10223,6 +11011,73 @@ ], "time": "2022-10-07T08:02:12+00:00" }, + { + "name": "symfony/options-resolver", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "51f7006670febe4cbcbae177cbffe93ff833250d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/51f7006670febe4cbcbae177cbffe93ff833250d", + "reference": "51f7006670febe4cbcbae177cbffe93ff833250d", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v6.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, { "name": "symfony/polyfill-ctype", "version": "v1.26.0", @@ -11086,6 +11941,94 @@ ], "time": "2022-06-27T17:10:44+00:00" }, + { + "name": "symfony/psr-http-message-bridge", + "version": "v2.1.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/psr-http-message-bridge.git", + "reference": "d444f85dddf65c7e57c58d8e5b3a4dbb593b1840" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/d444f85dddf65c7e57c58d8e5b3a4dbb593b1840", + "reference": "d444f85dddf65c7e57c58d8e5b3a4dbb593b1840", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0", + "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0" + }, + "require-dev": { + "nyholm/psr7": "^1.1", + "psr/log": "^1.1 || ^2 || ^3", + "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0", + "symfony/config": "^4.4 || ^5.0 || ^6.0", + "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0", + "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0", + "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^5.4@dev || ^6.0" + }, + "suggest": { + "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" + }, + "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-main": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bridge\\PsrHttpMessage\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } + ], + "description": "PSR HTTP message bridge", + "homepage": "http://symfony.com", + "keywords": [ + "http", + "http-message", + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/symfony/psr-http-message-bridge/issues", + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-09-05T10:34:54+00:00" + }, { "name": "symfony/routing", "version": "v6.0.11", @@ -11796,16 +12739,16 @@ }, { "name": "vlucas/phpdotenv", - "version": "v5.4.1", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", "shasum": "" }, "require": { @@ -11820,15 +12763,19 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" + "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" }, "suggest": { "ext-filter": "Required to use the boolean validator." }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "5.4-dev" + "dev-master": "5.5-dev" } }, "autoload": { @@ -11860,7 +12807,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" }, "funding": [ { @@ -11872,7 +12819,7 @@ "type": "tidelift" } ], - "time": "2021-12-12T23:22:04+00:00" + "time": "2022-10-16T01:01:54+00:00" }, { "name": "voku/portable-ascii", @@ -14403,16 +15350,16 @@ }, { "name": "spatie/laravel-ignition", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "75d465ec577abb432af1ca9b33683d5a6e921eb9" + "reference": "f2336fc79d99aab5cf27fa4aebe5e9c9ecf3808a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/75d465ec577abb432af1ca9b33683d5a6e921eb9", - "reference": "75d465ec577abb432af1ca9b33683d5a6e921eb9", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/f2336fc79d99aab5cf27fa4aebe5e9c9ecf3808a", + "reference": "f2336fc79d99aab5cf27fa4aebe5e9c9ecf3808a", "shasum": "" }, "require": { @@ -14489,7 +15436,7 @@ "type": "github" } ], - "time": "2022-10-04T10:14:31+00:00" + "time": "2022-10-14T12:24:21+00:00" }, { "name": "theseer/tokenizer", diff --git a/config/app.php b/config/app.php index a01930e41..3bccbbcd2 100644 --- a/config/app.php +++ b/config/app.php @@ -180,6 +180,7 @@ return [ /* * Package Service Providers... */ + Bugsnag\BugsnagLaravel\BugsnagServiceProvider::class, Laravel\Tinker\TinkerServiceProvider::class, /* diff --git a/config/bugsnag.php b/config/bugsnag.php new file mode 100644 index 000000000..fb4b5b95b --- /dev/null +++ b/config/bugsnag.php @@ -0,0 +1,364 @@ + env('BUGSNAG_API_KEY', ''), + + /* + |-------------------------------------------------------------------------- + | App Type + |-------------------------------------------------------------------------- + | + | Set the type of application executing the current code. + | + */ + + 'app_type' => env('BUGSNAG_APP_TYPE'), + + /* + |-------------------------------------------------------------------------- + | App Version + |-------------------------------------------------------------------------- + | + | Set the version of application executing the current code. + | + */ + + 'app_version' => env('BUGSNAG_APP_VERSION'), + + /* + |-------------------------------------------------------------------------- + | Batch Sending + |-------------------------------------------------------------------------- + | + | Set to true to send the errors through to Bugsnag when the PHP process + | shuts down, in order to prevent your app waiting on HTTP requests. + | + | Setting this to false will send an HTTP request straight away for each + | error. + | + */ + + 'batch_sending' => env('BUGSNAG_BATCH_SENDING', true), + + /* + |-------------------------------------------------------------------------- + | Endpoint + |-------------------------------------------------------------------------- + | + | Set what server the Bugsnag notifier should send errors to. By default + | this is set to 'https://notify.bugsnag.com', but for Bugsnag Enterprise + | this should be the URL to your Bugsnag instance. + | + */ + + 'endpoint' => env('BUGSNAG_ENDPOINT'), + + /* + |-------------------------------------------------------------------------- + | Filters + |-------------------------------------------------------------------------- + | + | Use this if you want to ensure you don't send sensitive data such as + | passwords, and credit card numbers to our servers. Any keys which + | contain these strings will be filtered. + | + | This option has been deprecated in favour of 'redacted_keys' + | + */ + + 'filters' => empty(env('BUGSNAG_FILTERS')) ? null : explode(',', str_replace(' ', '', env('BUGSNAG_FILTERS'))), + + /* + |-------------------------------------------------------------------------- + | Hostname + |-------------------------------------------------------------------------- + | + | You can set the hostname of your server to something specific for you to + | identify it by if needed. + | + */ + + 'hostname' => env('BUGSNAG_HOSTNAME', env('APP_URL')), + + /* + |-------------------------------------------------------------------------- + | Proxy + |-------------------------------------------------------------------------- + | + | This is where you can set the proxy settings you'd like us to use when + | communicating with Bugsnag when reporting errors. + | + */ + + 'proxy' => array_filter([ + 'http' => env('HTTP_PROXY'), + 'https' => env('HTTPS_PROXY'), + 'no' => empty(env('NO_PROXY')) ? null : explode(',', str_replace(' ', '', env('NO_PROXY'))), + ]), + + /* + |-------------------------------------------------------------------------- + | Project Root + |-------------------------------------------------------------------------- + | + | Bugsnag marks stacktrace lines as in-project if they come from files + | inside your “project root”. You can set this here. + | + | If this is not set, we will automatically try to detect it. + | + */ + + 'project_root' => env('BUGSNAG_PROJECT_ROOT'), + + /* + |-------------------------------------------------------------------------- + | Project Root Regex + |-------------------------------------------------------------------------- + | + | Bugsnag marks stacktrace lines as in-project if they come from files + | inside your “project root”. You can set this here. + | + | This option allows you to set it as a regular expression and will take + | precedence over "project_root" if both are defined. + | + */ + + 'project_root_regex' => env('BUGSNAG_PROJECT_ROOT_REGEX'), + + /* + |-------------------------------------------------------------------------- + | Strip Path + |-------------------------------------------------------------------------- + | + | The strip path is a path to be trimmed from the start of any filepaths in + | your stacktraces. + | + | If this is not set, we will automatically try to detect it. + | + */ + + 'strip_path' => env('BUGSNAG_STRIP_PATH'), + + /* + |-------------------------------------------------------------------------- + | Strip Path Regex + |-------------------------------------------------------------------------- + | + | The strip path is a path to be trimmed from the start of any filepaths in + | your stacktraces. + | + | This option allows you to set it as a regular expression and will take + | precedence over "strip_path" if both are defined. + | + */ + + 'strip_path_regex' => env('BUGSNAG_STRIP_PATH_REGEX'), + + /* + |-------------------------------------------------------------------------- + | Query + |-------------------------------------------------------------------------- + | + | Enable this if you'd like us to automatically record all queries executed + | as breadcrumbs. + | + */ + + 'query' => env('BUGSNAG_QUERY', true), + + /* + |-------------------------------------------------------------------------- + | Bindings + |-------------------------------------------------------------------------- + | + | Enable this if you'd like us to include the query bindings in our query + | breadcrumbs. + | + */ + + 'bindings' => env('BUGSNAG_QUERY_BINDINGS', false), + + /* + |-------------------------------------------------------------------------- + | Release Stage + |-------------------------------------------------------------------------- + | + | Set the release stage to use when sending notifications to Bugsnag. + | + | Leaving this unset will default to using the application environment. + | + */ + + 'release_stage' => env('BUGSNAG_RELEASE_STAGE'), + + /* + |-------------------------------------------------------------------------- + | Notify Release Stages + |-------------------------------------------------------------------------- + | + | Set which release stages should send notifications to Bugsnag. + | + */ + + 'notify_release_stages' => empty(env('BUGSNAG_NOTIFY_RELEASE_STAGES')) ? null : explode(',', str_replace(' ', '', env('BUGSNAG_NOTIFY_RELEASE_STAGES'))), + + /* + |-------------------------------------------------------------------------- + | Send Code + |-------------------------------------------------------------------------- + | + | Bugsnag automatically sends a small snippet of the code that crashed to + | help you diagnose even faster from within your dashboard. If you don’t + | want to send this snippet, then set this to false. + | + */ + + 'send_code' => env('BUGSNAG_SEND_CODE', true), + + /* + |-------------------------------------------------------------------------- + | Callbacks + |-------------------------------------------------------------------------- + | + | Enable this if you'd like us to enable our default set of notification + | callbacks. These add things like the cookie information and session + | details to the error to be sent to Bugsnag. + | + | If you'd like to add your own callbacks, you can call the + | Bugsnag::registerCallback method from the boot method of your app + | service provider. + | + */ + + 'callbacks' => env('BUGSNAG_CALLBACKS', true), + + /* + |-------------------------------------------------------------------------- + | User + |-------------------------------------------------------------------------- + | + | Enable this if you'd like us to set the current user logged in via + | Laravel's authentication system. + | + | If you'd like to add your own user resolver, you can do this by using + | callbacks via Bugsnag::registerCallback. + | + */ + + 'user' => env('BUGSNAG_USER', true), + + /* + |-------------------------------------------------------------------------- + | Logger Notify Level + |-------------------------------------------------------------------------- + | + | This sets the level at which a logged message will trigger a notification + | to Bugsnag. By default this level will be 'notice'. + | + | Must be one of the Psr\Log\LogLevel levels from the Psr specification. + | + */ + + 'logger_notify_level' => env('BUGSNAG_LOGGER_LEVEL'), + + /* + |-------------------------------------------------------------------------- + | Auto Capture Sessions + |-------------------------------------------------------------------------- + | + | Enable this to start tracking sessions and deliver them to Bugsnag. + | + */ + + 'auto_capture_sessions' => env('BUGSNAG_CAPTURE_SESSIONS', false), + + /* + |-------------------------------------------------------------------------- + | Sessions Endpoint + |-------------------------------------------------------------------------- + | + | Sets a url to send tracked sessions to. + | + */ + + 'session_endpoint' => env('BUGSNAG_SESSION_ENDPOINT'), + + /* + |-------------------------------------------------------------------------- + | Builds Endpoint + |-------------------------------------------------------------------------- + | + | Sets a url to send build reports to. + | + */ + + 'build_endpoint' => env('BUGSNAG_BUILD_ENDPOINT'), + + /* + |-------------------------------------------------------------------------- + | Discard Classes + |-------------------------------------------------------------------------- + | + | An array of classes that should not be sent to Bugsnag. + | + | This can contain both fully qualified class names and regular expressions. + | + */ + + 'discard_classes' => empty(env('BUGSNAG_DISCARD_CLASSES')) ? null : explode(',', env('BUGSNAG_DISCARD_CLASSES')), + + /* + |-------------------------------------------------------------------------- + | Redacted Keys + |-------------------------------------------------------------------------- + | + | An array of metadata keys that should be redacted. + | + */ + + 'redacted_keys' => empty(env('BUGSNAG_REDACTED_KEYS')) ? null : explode(',', env('BUGSNAG_REDACTED_KEYS')), + + /* + |-------------------------------------------------------------------------- + | Feature flags + |-------------------------------------------------------------------------- + | + | An array of feature flags to add to all reports. + | + | Each element in the array must have a "name" key and can optionally have a + | "variant" key, for example: + | + | [ + | ['name' => 'example without a variant'], + | ['name' => 'example with a variant', 'variant' => 'example of a variant'], + | ] + | + */ + + 'feature_flags' => [], + + /* + |-------------------------------------------------------------------------- + | Before send + |-------------------------------------------------------------------------- + | + | An array of callback class and method. + | + */ + + 'before_send' => [env('BUGSNAG_BEFORE_SEND_CLASS', 'App\\Exceptions\\Trackers\\Bugsnag'), 'beforeSend'], + +]; diff --git a/config/logging.php b/config/logging.php index 839c5f33b..2685e29a6 100644 --- a/config/logging.php +++ b/config/logging.php @@ -128,6 +128,16 @@ return [ 'path' => storage_path('logs/laravel.log'), ], + 'bugsnag' => [ + 'driver' => 'bugsnag', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'sentry' => [ + 'driver' => 'sentry', + 'level' => env('LOG_LEVEL', 'debug'), + ], + ], ]; diff --git a/config/sentry.php b/config/sentry.php new file mode 100644 index 000000000..cb0702773 --- /dev/null +++ b/config/sentry.php @@ -0,0 +1,59 @@ + env('SENTRY_LARAVEL_DSN', env('SENTRY_DSN')), + + // capture release as git sha + // 'release' => trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD')) + + // When left empty or `null` the Laravel environment will be used + 'environment' => env('SENTRY_ENVIRONMENT'), + + 'breadcrumbs' => [ + // Capture Laravel logs in breadcrumbs + 'logs' => true, + + // Capture SQL queries in breadcrumbs + 'sql_queries' => true, + + // Capture bindings on SQL queries logged in breadcrumbs + 'sql_bindings' => true, + + // Capture queue job information in breadcrumbs + 'queue_info' => true, + + // Capture command information in breadcrumbs + 'command_info' => true, + ], + + 'tracing' => [ + // Trace queue jobs as their own transactions + 'queue_job_transactions' => env('SENTRY_TRACE_QUEUE_ENABLED', false), + + // Capture queue jobs as spans when executed on the sync driver + 'queue_jobs' => true, + + // Capture SQL queries as spans + 'sql_queries' => true, + + // Try to find out where the SQL query originated from and add it to the query spans + 'sql_origin' => true, + + // Capture views as spans + 'views' => true, + + // Indicates if the tracing integrations supplied by Sentry should be loaded + 'default_integrations' => true, + ], + + // @see: https://docs.sentry.io/platforms/php/configuration/options/#send-default-pii + 'send_default_pii' => env('SENTRY_SEND_DEFAULT_PII', true), + + 'traces_sample_rate' => (float)(env('SENTRY_TRACES_SAMPLE_RATE', 0.0)), + + 'before_send' => [env('SENTRY_BEFORE_SEND_CLASS', 'App\\Exceptions\\Trackers\\Sentry'), 'beforeSend'], + + 'traces_sampler' => [env('SENTRY_TRACES_SAMPLER_CLASS', 'App\\Exceptions\\Trackers\\Sentry'), 'tracesSampler'], + +]; diff --git a/public/css/app.css b/public/css/app.css index 90dd516b3..0030cfee7 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -51260,6 +51260,12 @@ body{ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } +[dir="rtl"] .rtl\:-scale-x-100{ + --tw-scale-x: -1; + -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + [dir="rtl"] .rtl\:space-x-reverse > :not([hidden]) ~ :not([hidden]){ --tw-space-x-reverse: 1; } @@ -51788,9 +51794,15 @@ body{ margin-bottom: 3rem; } +<<<<<<< HEAD .lg\:my-16{ margin-top: 4rem; margin-bottom: 4rem; +======= + .lg\:-mx-12{ + margin-left: -3rem; + margin-right: -3rem; +>>>>>>> d1b81891f887f0ababe1c40221defa5b69162795 } .lg\:my-0{ @@ -51864,6 +51876,10 @@ body{ height: 16rem; } + .lg\:h-auto{ + height: auto; + } + .lg\:h-48{ height: 12rem; } @@ -51880,16 +51896,17 @@ body{ height: 3rem; } - .lg\:h-auto{ - height: auto; - } - .lg\:w-9{ width: 2.25rem; } +<<<<<<< HEAD .lg\:w-18{ width: 4.5rem; +======= + .lg\:w-96{ + width: 24rem; +>>>>>>> d1b81891f887f0ababe1c40221defa5b69162795 } .lg\:w-1\/2{ @@ -51972,10 +51989,6 @@ body{ width: 1rem; } - .lg\:w-96{ - width: 24rem; - } - .lg\:w-2\/4{ width: 50%; } @@ -52099,6 +52112,26 @@ body{ border-right-width: 1px; } + .lg\:px-3{ + padding-left: 0.75rem; + padding-right: 0.75rem; + } + + .lg\:px-4{ + padding-left: 1rem; + padding-right: 1rem; + } + + .lg\:px-6{ + padding-left: 1.5rem; + padding-right: 1.5rem; + } + + .lg\:px-12{ + padding-left: 3rem; + padding-right: 3rem; + } + .lg\:px-24{ padding-left: 6rem; padding-right: 6rem; @@ -52109,11 +52142,6 @@ body{ padding-bottom: 0px; } - .lg\:px-12{ - padding-left: 3rem; - padding-right: 3rem; - } - .lg\:pl-24{ padding-left: 6rem; } diff --git a/resources/assets/js/components/AkauntingColor.vue b/resources/assets/js/components/AkauntingColor.vue index 17a0ffb5d..8bd0f73ff 100644 --- a/resources/assets/js/components/AkauntingColor.vue +++ b/resources/assets/js/components/AkauntingColor.vue @@ -189,8 +189,10 @@ export default { let el = this.$refs.dropdownMenu; let target = event.target; - if (el !== target && ! el.contains(target)) { - this.isOpen = false; + if (typeof el != "undefined") { + if (el !== target && ! el.contains(target)) { + this.isOpen = false; + } } }, }, diff --git a/resources/assets/js/components/AkauntingContactCard.vue b/resources/assets/js/components/AkauntingContactCard.vue index 5dee23121..702720cca 100644 --- a/resources/assets/js/components/AkauntingContactCard.vue +++ b/resources/assets/js/components/AkauntingContactCard.vue @@ -52,13 +52,11 @@ - - +
| {{ contact.phone }} - - {{ contact.email }} + - {{ contact.email }} |
|---|