diff --git a/.ci/phpstan.neon b/.ci/phpstan.neon index 0838d68e77..199a9a91bf 100644 --- a/.ci/phpstan.neon +++ b/.ci/phpstan.neon @@ -16,11 +16,13 @@ parameters: - message: '#Function compact\(\) should not be used.#' paths: + - ../app/Http/Controllers - ../app/Support/Http/Controllers/RenderPartialViews.php - ../app/Support/Form/FormSupport.php - ../app/Support/Form/CurrencyForm.php - ../app/Support/Form/AccountForm.php - ../app/Support/ExpandedForm.php + - ../app/Generator/Report paths: - ../app - ../database @@ -28,4 +30,4 @@ parameters: - ../bootstrap/app.php # The level 8 is the highest level. original was 5 - level: 5 + level: 2 diff --git a/app/Factory/RecurrenceFactory.php b/app/Factory/RecurrenceFactory.php index 41a8082ce0..5622cfafcc 100644 --- a/app/Factory/RecurrenceFactory.php +++ b/app/Factory/RecurrenceFactory.php @@ -151,4 +151,13 @@ class RecurrenceFactory $this->user = $user; } + /** + * @return MessageBag + */ + public function getErrors(): MessageBag + { + return $this->errors; + } + + } diff --git a/app/Http/Controllers/Rule/CreateController.php b/app/Http/Controllers/Rule/CreateController.php index 4c3106d773..d0ed539094 100644 --- a/app/Http/Controllers/Rule/CreateController.php +++ b/app/Http/Controllers/Rule/CreateController.php @@ -192,7 +192,7 @@ class CreateController extends Controller */ public function createFromJournal(Request $request, TransactionJournal $journal) { - $request->session()->flash('info', (string)trans('firefly.instructions_rule_from_journal', ['name' => e($journal->name)])); + $request->session()->flash('info', (string)trans('firefly.instructions_rule_from_journal', ['name' => e($journal->description)])); $subTitleIcon = 'fa-clone'; $subTitle = (string)trans('firefly.make_new_rule_no_group'); diff --git a/app/Http/Controllers/Transaction/CreateController.php b/app/Http/Controllers/Transaction/CreateController.php index 9342ba3643..8a38cf7a57 100644 --- a/app/Http/Controllers/Transaction/CreateController.php +++ b/app/Http/Controllers/Transaction/CreateController.php @@ -85,9 +85,9 @@ class CreateController extends Controller /** * Create a new transaction group. * - * @param string|null objectType + * @param string|null $objectType * - * @return Factory|View + * @return Factory|\Illuminate\Contracts\View\View */ public function create(?string $objectType) { diff --git a/app/Http/Controllers/Transaction/DeleteController.php b/app/Http/Controllers/Transaction/DeleteController.php index 0695367159..aae5daabf5 100644 --- a/app/Http/Controllers/Transaction/DeleteController.php +++ b/app/Http/Controllers/Transaction/DeleteController.php @@ -37,8 +37,7 @@ use URL; */ class DeleteController extends Controller { - /** @var TransactionGroupRepositoryInterface */ - private $repository; + private TransactionGroupRepositoryInterface $repository; /** * IndexController constructor. @@ -67,7 +66,7 @@ class DeleteController extends Controller * * @param TransactionGroup $group * - * @return RedirectResponse|Redirector|View + * @return mixed */ public function delete(TransactionGroup $group) { diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index cac8a6a2b4..2c087122f8 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -26,6 +26,7 @@ namespace FireflyIII\Http\Middleware; use Closure; use FireflyIII\Exceptions\FireflyException; +use FireflyIII\User; use Illuminate\Auth\AuthenticationException; use Illuminate\Contracts\Auth\Factory as Auth; use Illuminate\Database\QueryException; @@ -77,8 +78,8 @@ class Authenticate /** * Determine if the user is logged in to any of the given guards. * - * @param $request - * @param array $guards + * @param mixed $request + * @param array $guards * * @return mixed * @throws FireflyException @@ -95,6 +96,7 @@ class Authenticate // do an extra check on user object. /** @noinspection PhpUndefinedMethodInspection */ + /** @var User $user */ $user = $this->auth->authenticate(); if (1 === (int)$user->blocked) { $message = (string)trans('firefly.block_account_logout'); @@ -127,7 +129,7 @@ class Authenticate foreach ($guards as $guard) { if ($this->auth->guard($guard)->check()) { /** @noinspection PhpVoidFunctionResultUsedInspection */ - return $this->auth->shouldUse($guard); + return $this->auth->shouldUse($guard); // @phpstan-ignore-line } } diff --git a/app/Http/Middleware/Binder.php b/app/Http/Middleware/Binder.php index 70ca7259d1..ace2cf4bc2 100644 --- a/app/Http/Middleware/Binder.php +++ b/app/Http/Middleware/Binder.php @@ -81,9 +81,9 @@ class Binder /** * Do the binding. * - * @param $key - * @param $value - * @param $route + * @param string $key + * @param string $value + * @param Route $route * * @return mixed */ diff --git a/app/Http/Middleware/InterestingMessage.php b/app/Http/Middleware/InterestingMessage.php index 9f5494d5e2..2fc7394427 100644 --- a/app/Http/Middleware/InterestingMessage.php +++ b/app/Http/Middleware/InterestingMessage.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace FireflyIII\Http\Middleware; use Closure; +use FireflyIII\Models\Account; use FireflyIII\Models\TransactionGroup; use FireflyIII\Models\TransactionJournal; use Illuminate\Http\Request; @@ -93,7 +94,7 @@ class InterestingMessage $accountId = $request->get('account_id'); $message = $request->get('message'); - /** @var TransactionGroup $group */ + /** @var Account $account */ $account = auth()->user()->accounts()->withTrashed()->find($accountId); if (null === $account) { diff --git a/app/Http/Requests/ObjectGroupFormRequest.php b/app/Http/Requests/ObjectGroupFormRequest.php index 816b33a154..f17d09557a 100644 --- a/app/Http/Requests/ObjectGroupFormRequest.php +++ b/app/Http/Requests/ObjectGroupFormRequest.php @@ -53,9 +53,8 @@ class ObjectGroupFormRequest extends FormRequest */ public function rules(): array { - /** @var ObjectGroup $piggy */ + /** @var ObjectGroup $objectGroup */ $objectGroup = $this->route()->parameter('objectGroup'); - $titleRule = 'required|between:1,255|uniqueObjectGroup'; if (null !== $objectGroup) { diff --git a/app/Jobs/CreateRecurringTransactions.php b/app/Jobs/CreateRecurringTransactions.php index cdfe37b62f..31f3dd82b3 100644 --- a/app/Jobs/CreateRecurringTransactions.php +++ b/app/Jobs/CreateRecurringTransactions.php @@ -239,9 +239,9 @@ class CreateRecurringTransactions implements ShouldQueue } /** - * Has the reuccrence started yet. + * Has the recurrence started yet? * - * @param $recurrence + * @param Recurrence $recurrence * * @return bool */ diff --git a/app/Models/Account.php b/app/Models/Account.php index 44b73d10bf..cb8494a026 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -246,7 +246,7 @@ class Account extends Model /** * @codeCoverageIgnore * - * @param $value + * @param mixed $value * * @codeCoverageIgnore */ diff --git a/app/Models/AccountMeta.php b/app/Models/AccountMeta.php index c35eb5804c..dd5e0ee9a5 100644 --- a/app/Models/AccountMeta.php +++ b/app/Models/AccountMeta.php @@ -76,7 +76,7 @@ class AccountMeta extends Model } /** - * @param $value + * @param mixed $value * * @codeCoverageIgnore * @return mixed @@ -87,7 +87,7 @@ class AccountMeta extends Model } /** - * @param $value + * @param mixed $value * * @codeCoverageIgnore */ diff --git a/app/Models/Bill.php b/app/Models/Bill.php index 46a48a8b73..e1e924cd83 100644 --- a/app/Models/Bill.php +++ b/app/Models/Bill.php @@ -176,7 +176,7 @@ class Bill extends Model /** * @codeCoverageIgnore * - * @param $value + * @param mixed $value */ public function setAmountMaxAttribute($value): void { @@ -184,7 +184,7 @@ class Bill extends Model } /** - * @param $value + * @param mixed $value * * @codeCoverageIgnore */ diff --git a/app/Models/BudgetLimit.php b/app/Models/BudgetLimit.php index 77362eeb6d..be3c853dbd 100644 --- a/app/Models/BudgetLimit.php +++ b/app/Models/BudgetLimit.php @@ -84,7 +84,7 @@ class BudgetLimit extends Model * * @param string $value * - * @return mixed + * @return BudgetLimit * @throws NotFoundHttpException */ public static function routeBinder(string $value): BudgetLimit diff --git a/app/Models/Configuration.php b/app/Models/Configuration.php index c75609a7cd..4913d85c2d 100644 --- a/app/Models/Configuration.php +++ b/app/Models/Configuration.php @@ -70,9 +70,10 @@ class Configuration extends Model protected $table = 'configuration'; /** + * TODO can be replaced by native laravel code * @codeCoverageIgnore * - * @param $value + * @param mixed $value * * @return mixed */ @@ -84,7 +85,7 @@ class Configuration extends Model /** * @codeCoverageIgnore * - * @param $value + * @param mixed $value */ public function setDataAttribute($value): void { diff --git a/app/Models/LinkType.php b/app/Models/LinkType.php index ff50e87374..be9510f90c 100644 --- a/app/Models/LinkType.php +++ b/app/Models/LinkType.php @@ -81,7 +81,7 @@ class LinkType extends Model /** * Route binder. Converts the key in the URL to the specified object (or throw 404). * - * @param $value + * @param string $value * * @throws NotFoundHttpException * @return LinkType diff --git a/app/Models/PiggyBank.php b/app/Models/PiggyBank.php index 419be6f8b2..2525948f81 100644 --- a/app/Models/PiggyBank.php +++ b/app/Models/PiggyBank.php @@ -181,7 +181,7 @@ class PiggyBank extends Model /** * @codeCoverageIgnore * - * @param $value + * @param mixed $value */ public function setTargetamountAttribute($value): void { diff --git a/app/Models/PiggyBankEvent.php b/app/Models/PiggyBankEvent.php index 666049215d..1990360bb0 100644 --- a/app/Models/PiggyBankEvent.php +++ b/app/Models/PiggyBankEvent.php @@ -37,7 +37,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; * @property int|null $transaction_journal_id * @property \Illuminate\Support\Carbon $date * @property string $amount - * @property-read \FireflyIII\Models\PiggyBank $piggyBank + * @property \FireflyIII\Models\PiggyBank $piggyBank * @property-read \FireflyIII\Models\TransactionJournal|null $transactionJournal * @method static Builder|PiggyBankEvent newModelQuery() * @method static Builder|PiggyBankEvent newQuery() @@ -81,7 +81,7 @@ class PiggyBankEvent extends Model /** * @codeCoverageIgnore * - * @param $value + * @param mixed $value */ public function setAmountAttribute($value): void { diff --git a/app/Models/PiggyBankRepetition.php b/app/Models/PiggyBankRepetition.php index 5c249f2f60..f9214107ac 100644 --- a/app/Models/PiggyBankRepetition.php +++ b/app/Models/PiggyBankRepetition.php @@ -120,7 +120,7 @@ class PiggyBankRepetition extends Model /** * @codeCoverageIgnore * - * @param $value + * @param mixed $value */ public function setCurrentamountAttribute($value): void { diff --git a/app/Models/Rule.php b/app/Models/Rule.php index 5a15335d6f..9d9b8e413f 100644 --- a/app/Models/Rule.php +++ b/app/Models/Rule.php @@ -48,10 +48,11 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @property bool $active * @property bool $stop_processing * @property bool $strict + * @property-read string $action_value * @property-read Collection|RuleAction[] $ruleActions * @property-read int|null $rule_actions_count * @property-read RuleGroup $ruleGroup - * @property-read Collection|RuleTrigger[] $ruleTriggers + * @property Collection|RuleTrigger[] $ruleTriggers * @property-read int|null $rule_triggers_count * @property-read User $user * @method static \Illuminate\Database\Eloquent\Builder|Rule newModelQuery() @@ -148,7 +149,7 @@ class Rule extends Model } /** - * @param $value + * @param mixed $value * * @codeCoverageIgnore */ diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php index 0653786ebe..418a673d00 100644 --- a/app/Models/Transaction.php +++ b/app/Models/Transaction.php @@ -230,7 +230,7 @@ class Transaction extends Model /** * @codeCoverageIgnore * - * @param $value + * @param mixed $value */ public function setAmountAttribute($value): void { diff --git a/app/Models/TransactionJournalLink.php b/app/Models/TransactionJournalLink.php index c8662191fa..c6eacc0862 100644 --- a/app/Models/TransactionJournalLink.php +++ b/app/Models/TransactionJournalLink.php @@ -81,7 +81,7 @@ class TransactionJournalLink extends Model * @param string $value * * @throws NotFoundHttpException - * @return mixed + * @return TransactionJournalLink * */ public static function routeBinder(string $value): TransactionJournalLink diff --git a/app/Models/TransactionJournalMeta.php b/app/Models/TransactionJournalMeta.php index 017f45aa2c..88e1da9134 100644 --- a/app/Models/TransactionJournalMeta.php +++ b/app/Models/TransactionJournalMeta.php @@ -79,7 +79,7 @@ class TransactionJournalMeta extends Model /** * @codeCoverageIgnore * - * @param $value + * @param mixed $value * * @return mixed */ @@ -91,7 +91,7 @@ class TransactionJournalMeta extends Model /** * @codeCoverageIgnore * - * @param $value + * @param mixed $value */ public function setDataAttribute($value): void { diff --git a/app/Models/TransactionType.php b/app/Models/TransactionType.php index 7f3f9f5c23..d48f725be6 100644 --- a/app/Models/TransactionType.php +++ b/app/Models/TransactionType.php @@ -79,7 +79,7 @@ class TransactionType extends Model * @param string $type * * @throws NotFoundHttpException - * @return Model|null|static + * @return TransactionType */ public static function routeBinder(string $type): TransactionType { diff --git a/app/Providers/AccountServiceProvider.php b/app/Providers/AccountServiceProvider.php index c87627d280..c6fae4af38 100644 --- a/app/Providers/AccountServiceProvider.php +++ b/app/Providers/AccountServiceProvider.php @@ -64,7 +64,7 @@ class AccountServiceProvider extends ServiceProvider /** @var AccountRepositoryInterface $repository */ $repository = app(AccountRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -78,7 +78,7 @@ class AccountServiceProvider extends ServiceProvider /** @var OperationsRepository $repository */ $repository = app(OperationsRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -98,7 +98,7 @@ class AccountServiceProvider extends ServiceProvider /** @var AccountTaskerInterface $tasker */ $tasker = app(AccountTasker::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $tasker->setUser(auth()->user()); } diff --git a/app/Providers/AdminServiceProvider.php b/app/Providers/AdminServiceProvider.php index 1eb49323db..41b2c87f8e 100644 --- a/app/Providers/AdminServiceProvider.php +++ b/app/Providers/AdminServiceProvider.php @@ -58,7 +58,7 @@ class AdminServiceProvider extends ServiceProvider function (Application $app) { /** @var LinkTypeRepository $repository */ $repository = app(LinkTypeRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } diff --git a/app/Providers/AttachmentServiceProvider.php b/app/Providers/AttachmentServiceProvider.php index 94e3052727..adf299f740 100644 --- a/app/Providers/AttachmentServiceProvider.php +++ b/app/Providers/AttachmentServiceProvider.php @@ -50,7 +50,7 @@ class AttachmentServiceProvider extends ServiceProvider function (Application $app) { /** @var AttachmentRepositoryInterface $repository */ $repository = app(AttachmentRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } diff --git a/app/Providers/BillServiceProvider.php b/app/Providers/BillServiceProvider.php index 7190f26798..ecaefa8edc 100644 --- a/app/Providers/BillServiceProvider.php +++ b/app/Providers/BillServiceProvider.php @@ -51,7 +51,7 @@ class BillServiceProvider extends ServiceProvider /** @var BillRepositoryInterface $repository */ $repository = app(BillRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } diff --git a/app/Providers/BudgetServiceProvider.php b/app/Providers/BudgetServiceProvider.php index ebcee13138..d36d5b9bb4 100644 --- a/app/Providers/BudgetServiceProvider.php +++ b/app/Providers/BudgetServiceProvider.php @@ -58,7 +58,7 @@ class BudgetServiceProvider extends ServiceProvider static function (Application $app) { /** @var BudgetRepositoryInterface $repository */ $repository = app(BudgetRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -72,7 +72,7 @@ class BudgetServiceProvider extends ServiceProvider static function (Application $app) { /** @var AvailableBudgetRepositoryInterface $repository */ $repository = app(AvailableBudgetRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -86,7 +86,7 @@ class BudgetServiceProvider extends ServiceProvider static function (Application $app) { /** @var BudgetLimitRepositoryInterface $repository */ $repository = app(BudgetLimitRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -100,7 +100,7 @@ class BudgetServiceProvider extends ServiceProvider static function (Application $app) { /** @var NoBudgetRepositoryInterface $repository */ $repository = app(NoBudgetRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -114,7 +114,7 @@ class BudgetServiceProvider extends ServiceProvider static function (Application $app) { /** @var OperationsRepositoryInterface $repository */ $repository = app(OperationsRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } diff --git a/app/Providers/CategoryServiceProvider.php b/app/Providers/CategoryServiceProvider.php index af3679b08f..0df0767cd1 100644 --- a/app/Providers/CategoryServiceProvider.php +++ b/app/Providers/CategoryServiceProvider.php @@ -54,7 +54,7 @@ class CategoryServiceProvider extends ServiceProvider static function (Application $app) { /** @var CategoryRepository $repository */ $repository = app(CategoryRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -67,7 +67,7 @@ class CategoryServiceProvider extends ServiceProvider static function (Application $app) { /** @var OperationsRepository $repository */ $repository = app(OperationsRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -80,7 +80,7 @@ class CategoryServiceProvider extends ServiceProvider static function (Application $app) { /** @var NoCategoryRepository $repository */ $repository = app(NoCategoryRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } diff --git a/app/Providers/CurrencyServiceProvider.php b/app/Providers/CurrencyServiceProvider.php index 0e4eafb253..ae527f4026 100644 --- a/app/Providers/CurrencyServiceProvider.php +++ b/app/Providers/CurrencyServiceProvider.php @@ -50,7 +50,7 @@ class CurrencyServiceProvider extends ServiceProvider function (Application $app) { /** @var CurrencyRepository $repository */ $repository = app(CurrencyRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } diff --git a/app/Providers/FireflyServiceProvider.php b/app/Providers/FireflyServiceProvider.php index cfc57fe7e9..ae216cdb74 100644 --- a/app/Providers/FireflyServiceProvider.php +++ b/app/Providers/FireflyServiceProvider.php @@ -186,7 +186,7 @@ class FireflyServiceProvider extends ServiceProvider static function (Application $app) { /** @var ObjectGroupRepository $repository */ $repository = app(ObjectGroupRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -199,7 +199,7 @@ class FireflyServiceProvider extends ServiceProvider static function (Application $app) { /** @var WebhookRepository $repository */ $repository = app(WebhookRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -212,7 +212,7 @@ class FireflyServiceProvider extends ServiceProvider static function (Application $app) { /** @var SearchRuleEngine $engine */ $engine = app(SearchRuleEngine::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $engine->setUser(auth()->user()); } diff --git a/app/Providers/JournalServiceProvider.php b/app/Providers/JournalServiceProvider.php index cf8eb35024..b2c6e2672f 100644 --- a/app/Providers/JournalServiceProvider.php +++ b/app/Providers/JournalServiceProvider.php @@ -68,7 +68,7 @@ class JournalServiceProvider extends ServiceProvider static function (Application $app) { /** @var JournalRepositoryInterface $repository */ $repository = app(JournalRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -82,7 +82,7 @@ class JournalServiceProvider extends ServiceProvider static function (Application $app) { /** @var JournalAPIRepositoryInterface $repository */ $repository = app(JournalAPIRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -96,7 +96,7 @@ class JournalServiceProvider extends ServiceProvider static function (Application $app) { /** @var JournalCLIRepositoryInterface $repository */ $repository = app(JournalCLIRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -115,7 +115,7 @@ class JournalServiceProvider extends ServiceProvider static function (Application $app) { /** @var TransactionGroupRepositoryInterface $repository */ $repository = app(TransactionGroupRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -134,7 +134,7 @@ class JournalServiceProvider extends ServiceProvider static function (Application $app) { /** @var GroupCollectorInterface $collector */ $collector = app(GroupCollector::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $collector->setUser(auth()->user()); } diff --git a/app/Providers/PiggyBankServiceProvider.php b/app/Providers/PiggyBankServiceProvider.php index d7e511f78c..59501483f7 100644 --- a/app/Providers/PiggyBankServiceProvider.php +++ b/app/Providers/PiggyBankServiceProvider.php @@ -50,7 +50,7 @@ class PiggyBankServiceProvider extends ServiceProvider function (Application $app) { /** @var PiggyBankRepository $repository */ $repository = app(PiggyBankRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } diff --git a/app/Providers/RecurringServiceProvider.php b/app/Providers/RecurringServiceProvider.php index a306b58934..ca247c9cae 100644 --- a/app/Providers/RecurringServiceProvider.php +++ b/app/Providers/RecurringServiceProvider.php @@ -51,7 +51,7 @@ class RecurringServiceProvider extends ServiceProvider /** @var RecurringRepositoryInterface $repository */ $repository = app(RecurringRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } diff --git a/app/Providers/RuleGroupServiceProvider.php b/app/Providers/RuleGroupServiceProvider.php index 19b9eceb78..8c4f96374b 100644 --- a/app/Providers/RuleGroupServiceProvider.php +++ b/app/Providers/RuleGroupServiceProvider.php @@ -50,7 +50,7 @@ class RuleGroupServiceProvider extends ServiceProvider function (Application $app) { /** @var RuleGroupRepository $repository */ $repository = app(RuleGroupRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } diff --git a/app/Providers/RuleServiceProvider.php b/app/Providers/RuleServiceProvider.php index 5215fd7a4d..41bc572893 100644 --- a/app/Providers/RuleServiceProvider.php +++ b/app/Providers/RuleServiceProvider.php @@ -50,7 +50,7 @@ class RuleServiceProvider extends ServiceProvider function (Application $app) { /** @var RuleRepository $repository */ $repository = app(RuleRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } diff --git a/app/Providers/SearchServiceProvider.php b/app/Providers/SearchServiceProvider.php index 1aa5941516..5e49a10c5a 100644 --- a/app/Providers/SearchServiceProvider.php +++ b/app/Providers/SearchServiceProvider.php @@ -50,7 +50,7 @@ class SearchServiceProvider extends ServiceProvider function (Application $app) { /** @var OperatorQuerySearch $search */ $search = app(OperatorQuerySearch::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $search->setUser(auth()->user()); } diff --git a/app/Providers/TagServiceProvider.php b/app/Providers/TagServiceProvider.php index 64b9b3cf29..4bcf89b463 100644 --- a/app/Providers/TagServiceProvider.php +++ b/app/Providers/TagServiceProvider.php @@ -53,7 +53,7 @@ class TagServiceProvider extends ServiceProvider /** @var TagRepository $repository */ $repository = app(TagRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } @@ -67,7 +67,7 @@ class TagServiceProvider extends ServiceProvider /** @var OperationsRepository $repository */ $repository = app(OperationsRepository::class); - if ($app->auth->check()) { + if ($app->auth->check()) { // @phpstan-ignore-line $repository->setUser(auth()->user()); } diff --git a/app/Repositories/Account/AccountRepository.php b/app/Repositories/Account/AccountRepository.php index b8e9224a67..06ed6e8dd6 100644 --- a/app/Repositories/Account/AccountRepository.php +++ b/app/Repositories/Account/AccountRepository.php @@ -220,7 +220,6 @@ class AccountRepository implements AccountRepositoryInterface */ public function getAccountsById(array $accountIds): Collection { - /** @var Collection $result */ $query = $this->user->accounts(); if (0 !== count($accountIds)) { @@ -240,7 +239,6 @@ class AccountRepository implements AccountRepositoryInterface */ public function getAccountsByType(array $types): Collection { - /** @var Collection $result */ $query = $this->user->accounts(); if (0 !== count($types)) { $query->accountTypeIn($types); @@ -263,7 +261,6 @@ class AccountRepository implements AccountRepositoryInterface */ public function getActiveAccountsByType(array $types): Collection { - /** @var Collection $result */ $query = $this->user->accounts()->with( ['accountmeta' => function (HasMany $query) { $query->where('name', 'account_role'); @@ -324,7 +321,6 @@ class AccountRepository implements AccountRepositoryInterface */ public function getInactiveAccountsByType(array $types): Collection { - /** @var Collection $result */ $query = $this->user->accounts()->with( ['accountmeta' => function (HasMany $query) { $query->where('name', 'account_role'); diff --git a/app/Repositories/Bill/BillRepository.php b/app/Repositories/Bill/BillRepository.php index 4451b501a5..1a9897d53a 100644 --- a/app/Repositories/Bill/BillRepository.php +++ b/app/Repositories/Bill/BillRepository.php @@ -29,6 +29,7 @@ use FireflyIII\Factory\BillFactory; use FireflyIII\Models\Attachment; use FireflyIII\Models\Bill; use FireflyIII\Models\Note; +use FireflyIII\Models\Rule; use FireflyIII\Models\Transaction; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; @@ -200,7 +201,6 @@ class BillRepository implements BillRepositoryInterface */ public function getBills(): Collection { - /** @var Collection $set */ return $this->user->bills() ->orderBy('order', 'ASC') ->orderBy('active', 'DESC') @@ -549,6 +549,7 @@ class BillRepository implements BillRepositoryInterface ->where('rule_actions.action_type', 'link_to_bill') ->get(['rules.id', 'rules.title', 'rule_actions.action_value', 'rules.active']); $array = []; + /** @var Rule $rule */ foreach ($rules as $rule) { $array[$rule->action_value] = $array[$rule->action_value] ?? []; $array[$rule->action_value][] = ['id' => $rule->id, 'title' => $rule->title, 'active' => $rule->active]; diff --git a/app/Repositories/Currency/CurrencyRepository.php b/app/Repositories/Currency/CurrencyRepository.php index 1f2601c059..d96e2aad6c 100644 --- a/app/Repositories/Currency/CurrencyRepository.php +++ b/app/Repositories/Currency/CurrencyRepository.php @@ -432,25 +432,6 @@ class CurrencyRepository implements CurrencyRepositoryInterface return null; } - /** - * Return a list of exchange rates with this currency. - * - * @param TransactionCurrency $currency - * - * @return Collection - */ - public function getExchangeRates(TransactionCurrency $currency): Collection - { - /** @var CurrencyExchangeRate $rate */ - return $this->user->currencyExchangeRates() - ->where( - function (Builder $query) use ($currency) { - $query->where('from_currency_id', $currency->id); - $query->orWhere('to_currency_id', $currency->id); - } - )->get(); - } - /** * @inheritDoc */ diff --git a/app/Repositories/Currency/CurrencyRepositoryInterface.php b/app/Repositories/Currency/CurrencyRepositoryInterface.php index b6f3daafef..fc9ddbfd67 100644 --- a/app/Repositories/Currency/CurrencyRepositoryInterface.php +++ b/app/Repositories/Currency/CurrencyRepositoryInterface.php @@ -207,15 +207,6 @@ interface CurrencyRepositoryInterface */ public function getExchangeRate(TransactionCurrency $fromCurrency, TransactionCurrency $toCurrency, Carbon $date): ?CurrencyExchangeRate; - /** - * Return a list of exchange rates with this currency. - * - * @param TransactionCurrency $currency - * - * @return Collection - */ - public function getExchangeRates(TransactionCurrency $currency): Collection; - /** * @param TransactionCurrency $currency * diff --git a/app/Repositories/Journal/JournalAPIRepository.php b/app/Repositories/Journal/JournalAPIRepository.php index 7873ba6565..f50d7821fe 100644 --- a/app/Repositories/Journal/JournalAPIRepository.php +++ b/app/Repositories/Journal/JournalAPIRepository.php @@ -97,7 +97,7 @@ class JournalAPIRepository implements JournalAPIRepositoryInterface */ public function getPiggyBankEvents(TransactionJournal $journal): Collection { - /** @var Collection $set */ + /** @var Collection $events */ $events = $journal->piggyBankEvents()->get(); $events->each( function (PiggyBankEvent $event) { diff --git a/app/Repositories/Journal/JournalRepository.php b/app/Repositories/Journal/JournalRepository.php index 42300fa746..bdde8e2583 100644 --- a/app/Repositories/Journal/JournalRepository.php +++ b/app/Repositories/Journal/JournalRepository.php @@ -278,7 +278,7 @@ class JournalRepository implements JournalRepositoryInterface } /** - * @param int $transactionId + * @param int $journalId */ public function reconcileById(int $journalId): void { diff --git a/app/Repositories/LinkType/LinkTypeRepository.php b/app/Repositories/LinkType/LinkTypeRepository.php index 65ffb69c92..7ab2a41aa5 100644 --- a/app/Repositories/LinkType/LinkTypeRepository.php +++ b/app/Repositories/LinkType/LinkTypeRepository.php @@ -169,7 +169,7 @@ class LinkTypeRepository implements LinkTypeRepositoryInterface /** * Returns all the journal links (of a specific type). * - * @param $linkType + * @param LinkType|null $linkType * * @return Collection */ diff --git a/app/Repositories/ObjectGroup/CreatesObjectGroups.php b/app/Repositories/ObjectGroup/CreatesObjectGroups.php index 02691f6089..2a25e58ab8 100644 --- a/app/Repositories/ObjectGroup/CreatesObjectGroups.php +++ b/app/Repositories/ObjectGroup/CreatesObjectGroups.php @@ -43,7 +43,6 @@ trait CreatesObjectGroups } /** - * @param User $user * @param string $title * * @return ObjectGroup|null diff --git a/changelog.md b/changelog.md index cad0b51988..e6e3293979 100644 --- a/changelog.md +++ b/changelog.md @@ -19,8 +19,10 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Fixed - [Issue 4589](https://github.com/firefly-iii/firefly-iii/issues/4589) It was not possible to change accounts in layout v2. - [Issue 4591](https://github.com/firefly-iii/firefly-iii/issues/4591) It was not possible to create splits in layout v2. -- #4593 Could not change or update recurring repetition data. -- #4596 The error handler mailer mails about too many things. +- [Issue 4593](https://github.com/firefly-iii/firefly-iii/issues/4593) Could not change or update recurring repetition data. +- [Issue 4596](https://github.com/firefly-iii/firefly-iii/issues/4596) The error handler mailer mails about too many things. +- [Issue 4603](https://github.com/firefly-iii/firefly-iii/issues/4603) Call to bad RSA method. +- #4607 Bad code in set source / set destination rule actions meant that it would not fire in some cases. ### Security - Nothing (yet) @@ -30,6 +32,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). This release features an update API version. Check out [the difference](https://github.com/firefly-iii/api-docs-generator/compare/1.5.1...1.5.2). +- [Issue 4600](https://github.com/firefly-iii/firefly-iii/issues/4600) Sometimes empty amounts would not be properly picked up by the API. - New endpoint to bulk update transactions. - The chart API endpoint includes the time in the labels. diff --git a/composer.lock b/composer.lock index 16d9ede2d2..c2c1dbf2cb 100644 --- a/composer.lock +++ b/composer.lock @@ -1642,16 +1642,16 @@ }, { "name": "laravel/framework", - "version": "v8.35.1", + "version": "v8.36.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "d118c0df39e7524131176aaf76493eae63a8a602" + "reference": "91c454715b81b9a39f718651d4e2f8104d45e7c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/d118c0df39e7524131176aaf76493eae63a8a602", - "reference": "d118c0df39e7524131176aaf76493eae63a8a602", + "url": "https://api.github.com/repos/laravel/framework/zipball/91c454715b81b9a39f718651d4e2f8104d45e7c2", + "reference": "91c454715b81b9a39f718651d4e2f8104d45e7c2", "shasum": "" }, "require": { @@ -1806,20 +1806,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-03-30T21:34:17+00:00" + "time": "2021-04-06T21:14:06+00:00" }, { "name": "laravel/passport", - "version": "v10.1.2", + "version": "v10.1.3", "source": { "type": "git", "url": "https://github.com/laravel/passport.git", - "reference": "9f1a5d56eb609250104afc38cf407f7c2520cda3" + "reference": "a5e4471dd99b7638ab5ca3ecab6cd87cf37eb410" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/passport/zipball/9f1a5d56eb609250104afc38cf407f7c2520cda3", - "reference": "9f1a5d56eb609250104afc38cf407f7c2520cda3", + "url": "https://api.github.com/repos/laravel/passport/zipball/a5e4471dd99b7638ab5ca3ecab6cd87cf37eb410", + "reference": "a5e4471dd99b7638ab5ca3ecab6cd87cf37eb410", "shasum": "" }, "require": { @@ -1883,7 +1883,7 @@ "issues": "https://github.com/laravel/passport/issues", "source": "https://github.com/laravel/passport" }, - "time": "2021-03-02T16:40:00+00:00" + "time": "2021-04-06T14:30:45+00:00" }, { "name": "laravel/ui", @@ -3268,16 +3268,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.6", + "version": "3.0.7", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "906a5fafabe5e6ba51ef3dc65b2722a677908837" + "reference": "d369510df0ebd5e1a5d0fe3d4d23c55fa87a403d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/906a5fafabe5e6ba51ef3dc65b2722a677908837", - "reference": "906a5fafabe5e6ba51ef3dc65b2722a677908837", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/d369510df0ebd5e1a5d0fe3d4d23c55fa87a403d", + "reference": "d369510df0ebd5e1a5d0fe3d4d23c55fa87a403d", "shasum": "" }, "require": { @@ -3359,7 +3359,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.6" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.7" }, "funding": [ { @@ -3375,7 +3375,7 @@ "type": "tidelift" } ], - "time": "2021-03-10T13:58:31+00:00" + "time": "2021-04-06T14:00:11+00:00" }, { "name": "pragmarx/google2fa", @@ -7181,16 +7181,16 @@ }, { "name": "barryvdh/laravel-debugbar", - "version": "v3.5.2", + "version": "v3.5.4", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "cae0a8d1cb89b0f0522f65e60465e16d738e069b" + "reference": "b8af309dea71eab3f2c942652969f518130228ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/cae0a8d1cb89b0f0522f65e60465e16d738e069b", - "reference": "cae0a8d1cb89b0f0522f65e60465e16d738e069b", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/b8af309dea71eab3f2c942652969f518130228ee", + "reference": "b8af309dea71eab3f2c942652969f518130228ee", "shasum": "" }, "require": { @@ -7250,7 +7250,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-debugbar/issues", - "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.5.2" + "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.5.4" }, "funding": [ { @@ -7258,7 +7258,7 @@ "type": "github" } ], - "time": "2021-01-06T14:21:44+00:00" + "time": "2021-04-06T18:11:42+00:00" }, { "name": "barryvdh/laravel-ide-helper", @@ -9716,12 +9716,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "0a55b3eacf6b4a0fdc6ec9d01e00285ca9942b2b" + "reference": "f3d64e623a75abaababa97e02a31e3771dea481a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/0a55b3eacf6b4a0fdc6ec9d01e00285ca9942b2b", - "reference": "0a55b3eacf6b4a0fdc6ec9d01e00285ca9942b2b", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/f3d64e623a75abaababa97e02a31e3771dea481a", + "reference": "f3d64e623a75abaababa97e02a31e3771dea481a", "shasum": "" }, "conflict": { @@ -9765,7 +9765,7 @@ "doctrine/doctrine-module": "<=0.7.1", "doctrine/mongodb-odm": ">=1,<1.0.2", "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", - "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", + "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", "dolibarr/dolibarr": "<11.0.4", "dompdf/dompdf": ">=0.6,<0.6.2", "drupal/core": ">=7,<7.74|>=8,<8.8.11|>=8.9,<8.9.9|>=9,<9.0.8", @@ -9832,7 +9832,7 @@ "magento/magento1ee": ">=1,<1.14.4.3", "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2-p.2", "marcwillmann/turn": "<0.3.3", - "mautic/core": "<2.16.5|>=3,<3.2.4|= 2.13.1", + "mautic/core": "<3.3.2|= 2.13.1", "mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35", "mittwald/typo3_forum": "<1.2.1", "monolog/monolog": ">=1.8,<1.12", @@ -9876,6 +9876,7 @@ "prestashop/contactform": ">1.0.1,<4.3", "prestashop/gamification": "<2.3.2", "prestashop/productcomments": ">=4,<4.2.1", + "prestashop/ps_emailsubscription": "<2.6.1", "prestashop/ps_facetedsearch": "<3.4.1", "privatebin/privatebin": "<1.2.2|>=1.3,<1.3.2", "propel/propel": ">=2-alpha.1,<=2-alpha.7", @@ -10045,7 +10046,7 @@ "type": "tidelift" } ], - "time": "2021-03-29T21:01:39+00:00" + "time": "2021-04-06T18:11:53+00:00" }, { "name": "sebastian/cli-parser", diff --git a/yarn.lock b/yarn.lock index d7561a7fd9..346591f8eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1808,9 +1808,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001181, caniuse-lite@^1.0.30001196: - version "1.0.30001205" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz#d79bf6a6fb13196b4bb46e5143a22ca0242e0ef8" - integrity sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og== + version "1.0.30001207" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz#364d47d35a3007e528f69adb6fecb07c2bb2cc50" + integrity sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw== chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -3069,10 +3069,10 @@ fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^2.0.0" -fs-monkey@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.1.tgz#4a82f36944365e619f4454d9fff106553067b781" - integrity sha512-fcSa+wyTqZa46iWweI7/ZiUfegOZl0SG8+dltIwFXo7+zYU9J9kpS3NB6pZcSlJdhvIwp81Adx2XhZorncxiaA== +fs-monkey@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== fs.realpath@^1.0.0: version "1.0.0" @@ -3721,9 +3721,9 @@ is-directory@^0.3.1: integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= is-docker@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" - integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.0.tgz#b037c8815281edaad6c2562648a5f5f18839d5f7" + integrity sha512-K4GwB4i/HzhAzwP/XSlspzRdFTI9N8OxJOyOU7Y5Rz+p+WBokXWVWblaJeBkggthmoSV0OoGTH5thJNvplpkvQ== is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" @@ -4225,11 +4225,11 @@ mem@^8.0.0: mimic-fn "^3.1.0" memfs@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.1.tgz#12301801a14eb3daa9f7491aa0ff09ffec519dd0" - integrity sha512-Y5vcpQzWTime4fBTr/fEnxXUxEYUgKbDlty1WX0gaa4ae14I6KmvK1S8HtXOX0elKAE6ENZJctkGtbTFYcRIUw== + version "3.2.2" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.2.tgz#5de461389d596e3f23d48bb7c2afb6161f4df40e" + integrity sha512-RE0CwmIM3CEvpcdK3rZ19BC4E6hv9kADkMN5rPduRak58cNArWLi/9jFLsa4rhsjfVxMP3v0jO7FHXq7SvFY5Q== dependencies: - fs-monkey "1.0.1" + fs-monkey "1.0.3" merge-descriptors@1.0.1: version "1.0.1" @@ -6654,9 +6654,9 @@ xtend@^4.0.0: integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" - integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== + version "5.0.6" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.6.tgz#8236b05cfc5af6a409f41326a4847c68989bb04f" + integrity sha512-PlVX4Y0lDTN6E2V4ES2tEdyvXkeKzxa8c/vo0pxPr/TqbztddTP0yn7zZylIyiAuxerqj0Q5GhpJ1YJCP8LaZQ== yallist@^2.1.2: version "2.1.2"