mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 02:36:28 +00:00 
			
		
		
		
	Compare commits
	
		
			33 Commits
		
	
	
		
			develop-20
			...
			develop-20
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | aef15cf3d3 | ||
|  | d1880de30e | ||
|  | 9d900a69ed | ||
|  | 1653f77b15 | ||
|  | 9418436d51 | ||
|  | 1c9a6a194a | ||
|  | 11cfb5a962 | ||
|  | 7d21467447 | ||
|  | 5ce9f32deb | ||
|  | 337440259f | ||
|  | c483e0768f | ||
|  | fd9b0d9417 | ||
|  | c3165f4937 | ||
|  | a5c9adc872 | ||
|  | 59cc007931 | ||
|  | 8b0b12b521 | ||
|  | 6ae1cfd82e | ||
|  | 4d7eb27fd0 | ||
|  | fe0b8d0128 | ||
|  | 04f0fcfbf7 | ||
|  | 7e182cf070 | ||
|  | ad78c302ef | ||
|  | 36b4c69491 | ||
|  | 30bd0711f4 | ||
|  | d847827584 | ||
|  | 786c1fcd58 | ||
|  | 90e7f0c0f7 | ||
|  | 63f334abe5 | ||
|  | 2466cd942f | ||
|  | ea37db87f4 | ||
|  | c168fb6960 | ||
|  | 21ddde9e0d | ||
|  | 44d4e4e6da | 
| @@ -164,6 +164,13 @@ MAIL_PASSWORD=null | ||||
| MAIL_ENCRYPTION=null | ||||
| MAIL_SENDMAIL_COMMAND= | ||||
|  | ||||
| # | ||||
| # If you use self-signed certificates for your STMP server, you can use the following settings. | ||||
| # | ||||
| MAIL_ALLOW_SELF_SIGNED=false | ||||
| MAIL_VERIFY_PEER=true | ||||
| MAIL_VERIFY_PEER_NAME=true | ||||
|  | ||||
| # Other mail drivers: | ||||
| # If you use Docker or similar, you can set these variables from a file by appending them with _FILE | ||||
| MAILGUN_DOMAIN= | ||||
|   | ||||
							
								
								
									
										23
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							| @@ -59,7 +59,28 @@ jobs: | ||||
|           git config user.email release@firefly-iii.org | ||||
|           git config advice.addIgnoredFile false | ||||
|           git config push.autoSetupRemote true | ||||
|       - name: crowdin action | ||||
|       - name: Lint PHP | ||||
|         run: | | ||||
|           php_lint_file() | ||||
|           { | ||||
|               local php_file="$1" | ||||
|               php -l "$php_file" &> /dev/null | ||||
|               if [ "$?" -ne 0 ] | ||||
|               then | ||||
|                   echo -e "[FAIL] $php_file" | ||||
|                   return 1 | ||||
|               fi | ||||
|           } | ||||
|  | ||||
|           export -f php_lint_file | ||||
|  | ||||
|           find . -path ./vendor -prune -o -name '*.php' | parallel -j 4 php_lint_file {} | ||||
|  | ||||
|           if [ "$?" -ne 0 ] | ||||
|           then | ||||
|               exit 1 | ||||
|           fi | ||||
|       - name: Crowdin action | ||||
|         uses: crowdin/github-action@v2 | ||||
|         with: | ||||
|           upload_sources: true | ||||
|   | ||||
| @@ -99,7 +99,6 @@ class BasicController extends Controller | ||||
|         $start        = $dates['start']; | ||||
|         $end          = $dates['end']; | ||||
|         $code         = $request->get('currency_code'); | ||||
| 
 | ||||
|         // balance information:
 | ||||
|         $balanceData  = $this->getBalanceInformation($start, $end); | ||||
|         $billData     = $this->getSubscriptionInformation($start, $end); | ||||
| @@ -471,6 +470,7 @@ class BasicController extends Controller | ||||
|      */ | ||||
|     private function getLeftToSpendInfo(Carbon $start, Carbon $end): array | ||||
|     { | ||||
| 
 | ||||
|         Log::debug(sprintf('Now in getLeftToSpendInfo("%s", "%s")', $start->format('Y-m-d H:i:s'), $end->format('Y-m-d H:i:s'))); | ||||
|         $return     = []; | ||||
|         $today      = today(config('app.timezone')); | ||||
| @@ -478,11 +478,39 @@ class BasicController extends Controller | ||||
|         $budgets    = $this->budgetRepository->getActiveBudgets(); | ||||
|         $spent      = $this->opsRepository->sumExpenses($start, $end, null, $budgets); | ||||
|         $days       = (int) $today->diffInDays($end, true) + 1; | ||||
|         $currencies = []; | ||||
| 
 | ||||
|         // first, create an entry for each entry in the "available" array.
 | ||||
|         /** @var array $availableBudget */ | ||||
|         foreach ($available as $currencyId =>  $availableBudget) { | ||||
|             $currencies[$currencyId] ??= $this->currencyRepos->find($currencyId); | ||||
|             $return[$currencyId] = [ | ||||
|                 'key'                     => sprintf('left-to-spend-in-%s', $currencies[$currencyId]->code), | ||||
|                 'title'                   => trans('firefly.box_left_to_spend_in_currency', ['currency' => $currencies[$currencyId]->symbol]), | ||||
|                 'no_available_budgets'    => false, | ||||
|                 'monetary_value'          => $availableBudget, | ||||
|                 'currency_id'             => (string) $currencies[$currencyId]->id, | ||||
|                 'currency_code'           => $currencies[$currencyId]->code, | ||||
|                 'currency_symbol'         => $currencies[$currencyId]->symbol, | ||||
|                 'currency_decimal_places' => $currencies[$currencyId]->decimal_places, | ||||
|                 'value_parsed'            => app('amount')->formatFlat($currencies[$currencyId]->symbol, $currencies[$currencyId]->decimal_places, $availableBudget, false), | ||||
|                 'local_icon'              => 'money', | ||||
|                 'sub_title'               => app('amount')->formatFlat( | ||||
|                     $currencies[$currencyId]->symbol, | ||||
|                     $currencies[$currencyId]->decimal_places, | ||||
|                     $availableBudget, | ||||
|                     false | ||||
|                 ), | ||||
|             ]; | ||||
|         } | ||||
|         foreach ($spent as $row) { | ||||
|             // either an amount was budgeted or 0 is available.
 | ||||
|             $currencyId      = $row['currency_id']; | ||||
|             $currencyId          = (int) $row['currency_id']; | ||||
|             $amount              = (string) ($available[$currencyId] ?? '0'); | ||||
|             if (0 === bccomp($amount, '0')) { | ||||
|                 // #9858 skip over currencies with no available budget.
 | ||||
|                 continue; | ||||
|             } | ||||
|             $spentInCurrency     = $row['sum']; | ||||
|             $leftToSpend         = bcadd($amount, $spentInCurrency); | ||||
|             $perDay              = '0'; | ||||
| @@ -492,9 +520,10 @@ class BasicController extends Controller | ||||
| 
 | ||||
|             Log::debug(sprintf('Spent %s %s', $row['currency_code'], $row['sum'])); | ||||
| 
 | ||||
|             $return[]        = [ | ||||
|             $return[$currencyId] = [ | ||||
|                 'key'                     => sprintf('left-to-spend-in-%s', $row['currency_code']), | ||||
|                 'title'                   => trans('firefly.box_left_to_spend_in_currency', ['currency' => $row['currency_symbol']]), | ||||
|                 'no_available_budgets'    => false, | ||||
|                 'monetary_value'          => $leftToSpend, | ||||
|                 'currency_id'             => (string) $row['currency_id'], | ||||
|                 'currency_code'           => $row['currency_code'], | ||||
| @@ -512,10 +541,11 @@ class BasicController extends Controller | ||||
|         } | ||||
|         if (0 === count($return)) { | ||||
|             $currency              = $this->nativeCurrency; | ||||
|             $return[] = [ | ||||
|             $return[$currency->id] = [ | ||||
|                 'key'                     => sprintf('left-to-spend-in-%s', $currency->code), | ||||
|                 'title'                   => trans('firefly.box_left_to_spend_in_currency', ['currency' => $currency->symbol]), | ||||
|                 'monetary_value'          => '0', | ||||
|                 'no_available_budgets'    => true, | ||||
|                 'currency_id'             => (string) $currency->id, | ||||
|                 'currency_code'           => $currency->code, | ||||
|                 'currency_symbol'         => $currency->symbol, | ||||
| @@ -531,7 +561,7 @@ class BasicController extends Controller | ||||
|             ]; | ||||
|         } | ||||
| 
 | ||||
|         return $return; | ||||
|         return array_values($return); | ||||
|     } | ||||
| 
 | ||||
|     private function getNetWorthInfo(Carbon $end): array | ||||
|   | ||||
| @@ -80,9 +80,10 @@ class UnknownUserLoginAttempt extends Notification | ||||
|     { | ||||
|         $settings = ReturnsSettings::getSettings('ntfy', 'owner', null); | ||||
|         $message  = new Message(); | ||||
|         $ip       = Request::ip(); | ||||
|         $message->topic($settings['ntfy_topic']); | ||||
|         $message->title((string) trans('email.unknown_user_subject')); | ||||
|         $message->body((string) trans('email.unknown_user_message', ['address' => $this->address])); | ||||
|         $message->body((string) trans('email.unknown_user_message', ['address' => $this->address, 'ip' => $ip])); | ||||
| 
 | ||||
|         return $message; | ||||
|     } | ||||
| @@ -92,7 +93,9 @@ class UnknownUserLoginAttempt extends Notification | ||||
|      */ | ||||
|     public function toPushover(OwnerNotifiable $notifiable): PushoverMessage | ||||
|     { | ||||
|         return PushoverMessage::create((string) trans('email.unknown_user_message', ['address' => $this->address])) | ||||
|         $ip = Request::ip(); | ||||
| 
 | ||||
|         return PushoverMessage::create((string) trans('email.unknown_user_message', ['address' => $this->address, 'ip' => $ip])) | ||||
|             ->title((string) trans('email.unknown_user_subject')) | ||||
|         ; | ||||
|     } | ||||
| @@ -102,8 +105,10 @@ class UnknownUserLoginAttempt extends Notification | ||||
|      */ | ||||
|     public function toSlack(OwnerNotifiable $notifiable): SlackMessage | ||||
|     { | ||||
|         $ip = Request::ip(); | ||||
| 
 | ||||
|         return new SlackMessage()->content( | ||||
|             (string) trans('email.unknown_user_body', ['address' => $this->address]) | ||||
|             (string) trans('email.unknown_user_body', ['address' => $this->address, 'ip' => $ip]) | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|   | ||||
| @@ -105,7 +105,7 @@ class UserFailedLoginAttempt extends Notification | ||||
|     public function via(User $notifiable): array | ||||
|     { | ||||
|         $channels   = ReturnsAvailableChannels::returnChannels('user', $notifiable); | ||||
|         $isDemoSite = FireflyConfig::get('is_demo_site',false)->data | ||||
|         $isDemoSite = FireflyConfig::get('is_demo_site', false)->data; | ||||
|         if (true === $isDemoSite) { | ||||
|             return array_diff($channels, ['mail']); | ||||
|         } | ||||
|   | ||||
| @@ -64,7 +64,7 @@ class OwnerTestNotificationEmail extends Notification | ||||
|      */ | ||||
|     public function via(OwnerNotifiable $notifiable): array | ||||
|     { | ||||
|         $isDemoSite = FireflyConfig::get('is_demo_site',false)->data | ||||
|         $isDemoSite = FireflyConfig::get('is_demo_site', false)->data; | ||||
|         if (true === $isDemoSite) { | ||||
|             return []; | ||||
|         } | ||||
|   | ||||
| @@ -61,7 +61,7 @@ class UserTestNotificationEmail extends Notification | ||||
|      */ | ||||
|     public function via(User $notifiable): array | ||||
|     { | ||||
|         $isDemoSite = FireflyConfig::get('is_demo_site',false)->data | ||||
|         $isDemoSite = FireflyConfig::get('is_demo_site', false)->data; | ||||
|         if (true === $isDemoSite) { | ||||
|             return []; | ||||
|         } | ||||
|   | ||||
| @@ -103,7 +103,7 @@ class NewAccessToken extends Notification | ||||
|     public function via(User $notifiable): array | ||||
|     { | ||||
|         $channels   = ReturnsAvailableChannels::returnChannels('user', $notifiable); | ||||
|         $isDemoSite = FireflyConfig::get('is_demo_site',false)->data | ||||
|         $isDemoSite = FireflyConfig::get('is_demo_site', false)->data; | ||||
|         if (true === $isDemoSite) { | ||||
|             return array_diff($channels, ['mail']); | ||||
|         } | ||||
|   | ||||
| @@ -149,8 +149,9 @@ class AvailableBudgetRepository implements AvailableBudgetRepositoryInterface, U | ||||
|             $currencyId          = $convertToNative && $availableBudget->transaction_currency_id !== $default->id ? $default->id : $availableBudget->transaction_currency_id; | ||||
|             $field               = $convertToNative && $availableBudget->transaction_currency_id !== $default->id ? 'native_amount' : 'amount'; | ||||
|             $return[$currencyId] ??= '0'; | ||||
|             $return[$currencyId] = bcadd($return[$currencyId], $availableBudget->{$field}); | ||||
|             Log::debug(sprintf('Add #%d %s (%s) for a total of %s', $currencyId, $availableBudget->{$field}, $field, $return[$currencyId])); | ||||
|             $amount              = '' === (string) $availableBudget->{$field} ? '0' : (string) $availableBudget->{$field}; | ||||
|             $return[$currencyId] = bcadd($return[$currencyId], $amount); | ||||
|             Log::debug(sprintf('Add #%d %s (%s) for a total of %s', $currencyId, $amount, $field, $return[$currencyId])); | ||||
|         } | ||||
| 
 | ||||
|         return $return; | ||||
|   | ||||
| @@ -247,6 +247,6 @@ class OperationsRepository implements OperationsRepositoryInterface, UserGroupIn | ||||
|         } | ||||
|         $summarizer = new TransactionSummarizer($this->user); | ||||
| 
 | ||||
|         return $summarizer->groupByCurrencyId($journals); | ||||
|         return $summarizer->groupByCurrencyId($journals, 'negative', false); | ||||
|     } | ||||
| } | ||||
|   | ||||
							
								
								
									
										181
									
								
								composer.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										181
									
								
								composer.lock
									
									
									
										generated
									
									
									
								
							| @@ -1010,16 +1010,16 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "firebase/php-jwt", | ||||
|             "version": "v6.11.0", | ||||
|             "version": "v6.11.1", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/firebase/php-jwt.git", | ||||
|                 "reference": "8f718f4dfc9c5d5f0c994cdfd103921b43592712" | ||||
|                 "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/firebase/php-jwt/zipball/8f718f4dfc9c5d5f0c994cdfd103921b43592712", | ||||
|                 "reference": "8f718f4dfc9c5d5f0c994cdfd103921b43592712", | ||||
|                 "url": "https://api.github.com/repos/firebase/php-jwt/zipball/d1e91ecf8c598d073d0995afa8cd5c75c6e19e66", | ||||
|                 "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -1067,9 +1067,9 @@ | ||||
|             ], | ||||
|             "support": { | ||||
|                 "issues": "https://github.com/firebase/php-jwt/issues", | ||||
|                 "source": "https://github.com/firebase/php-jwt/tree/v6.11.0" | ||||
|                 "source": "https://github.com/firebase/php-jwt/tree/v6.11.1" | ||||
|             }, | ||||
|             "time": "2025-01-23T05:11:06+00:00" | ||||
|             "time": "2025-04-09T20:32:01+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "fruitcake/php-cors", | ||||
| @@ -3472,22 +3472,22 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "mailersend/laravel-driver", | ||||
|             "version": "v2.8.0", | ||||
|             "version": "v2.9.1", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/mailersend/mailersend-laravel-driver.git", | ||||
|                 "reference": "b28fde8f6ec0cd5406100abf05f7899935e71652" | ||||
|                 "reference": "87fd5ab76808bbaac9221be0d306baef13e98725" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/mailersend/mailersend-laravel-driver/zipball/b28fde8f6ec0cd5406100abf05f7899935e71652", | ||||
|                 "reference": "b28fde8f6ec0cd5406100abf05f7899935e71652", | ||||
|                 "url": "https://api.github.com/repos/mailersend/mailersend-laravel-driver/zipball/87fd5ab76808bbaac9221be0d306baef13e98725", | ||||
|                 "reference": "87fd5ab76808bbaac9221be0d306baef13e98725", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
|                 "ext-json": "*", | ||||
|                 "illuminate/support": "^9.0 || ^10.0  || ^11.0 || ^12.0", | ||||
|                 "mailersend/mailersend": "^0.8.0 || ^0.23.0 || ^0.24.0 || ^0.30.0", | ||||
|                 "mailersend/mailersend": "^0.31.0", | ||||
|                 "nyholm/psr7": "^1.5", | ||||
|                 "php": ">=8.0", | ||||
|                 "php-http/guzzle7-adapter": "^1.0", | ||||
| @@ -3535,22 +3535,22 @@ | ||||
|             ], | ||||
|             "support": { | ||||
|                 "issues": "https://github.com/mailersend/mailersend-laravel-driver/issues", | ||||
|                 "source": "https://github.com/mailersend/mailersend-laravel-driver/tree/v2.8.0" | ||||
|                 "source": "https://github.com/mailersend/mailersend-laravel-driver/tree/v2.9.1" | ||||
|             }, | ||||
|             "time": "2025-03-06T16:55:40+00:00" | ||||
|             "time": "2025-04-09T09:33:07+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "mailersend/mailersend", | ||||
|             "version": "v0.30.0", | ||||
|             "version": "v0.31.0", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/mailersend/mailersend-php.git", | ||||
|                 "reference": "7ac40e50fa914a506c58d13c82dbf0d3bf0a6487" | ||||
|                 "reference": "513ff83ee768526055ad52987cde401ea7218c67" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/mailersend/mailersend-php/zipball/7ac40e50fa914a506c58d13c82dbf0d3bf0a6487", | ||||
|                 "reference": "7ac40e50fa914a506c58d13c82dbf0d3bf0a6487", | ||||
|                 "url": "https://api.github.com/repos/mailersend/mailersend-php/zipball/513ff83ee768526055ad52987cde401ea7218c67", | ||||
|                 "reference": "513ff83ee768526055ad52987cde401ea7218c67", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -3602,9 +3602,9 @@ | ||||
|             ], | ||||
|             "support": { | ||||
|                 "issues": "https://github.com/mailersend/mailersend-php/issues", | ||||
|                 "source": "https://github.com/mailersend/mailersend-php/tree/v0.30.0" | ||||
|                 "source": "https://github.com/mailersend/mailersend-php/tree/v0.31.0" | ||||
|             }, | ||||
|             "time": "2025-03-06T15:45:57+00:00" | ||||
|             "time": "2025-04-03T12:16:11+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "monolog/monolog", | ||||
| @@ -3965,38 +3965,39 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "nunomaduro/collision", | ||||
|             "version": "v8.7.0", | ||||
|             "version": "v8.8.0", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/nunomaduro/collision.git", | ||||
|                 "reference": "586cb8181a257a2152b6a855ca8d9598878a1a26" | ||||
|                 "reference": "4cf9f3b47afff38b139fb79ce54fc71799022ce8" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/nunomaduro/collision/zipball/586cb8181a257a2152b6a855ca8d9598878a1a26", | ||||
|                 "reference": "586cb8181a257a2152b6a855ca8d9598878a1a26", | ||||
|                 "url": "https://api.github.com/repos/nunomaduro/collision/zipball/4cf9f3b47afff38b139fb79ce54fc71799022ce8", | ||||
|                 "reference": "4cf9f3b47afff38b139fb79ce54fc71799022ce8", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
|                 "filp/whoops": "^2.17.0", | ||||
|                 "filp/whoops": "^2.18.0", | ||||
|                 "nunomaduro/termwind": "^2.3.0", | ||||
|                 "php": "^8.2.0", | ||||
|                 "symfony/console": "^7.2.1" | ||||
|                 "symfony/console": "^7.2.5" | ||||
|             }, | ||||
|             "conflict": { | ||||
|                 "laravel/framework": "<11.39.1 || >=13.0.0", | ||||
|                 "phpunit/phpunit": "<11.5.3 || >=12.0.0" | ||||
|                 "laravel/framework": "<11.44.2 || >=13.0.0", | ||||
|                 "phpunit/phpunit": "<11.5.15 || >=13.0.0" | ||||
|             }, | ||||
|             "require-dev": { | ||||
|                 "larastan/larastan": "^2.10.0", | ||||
|                 "laravel/framework": "^11.44.2", | ||||
|                 "brianium/paratest": "^7.8.3", | ||||
|                 "larastan/larastan": "^3.2", | ||||
|                 "laravel/framework": "^11.44.2 || ^12.6", | ||||
|                 "laravel/pint": "^1.21.2", | ||||
|                 "laravel/sail": "^1.41.0", | ||||
|                 "laravel/sanctum": "^4.0.8", | ||||
|                 "laravel/tinker": "^2.10.1", | ||||
|                 "orchestra/testbench-core": "^9.12.0", | ||||
|                 "pestphp/pest": "^3.7.4", | ||||
|                 "sebastian/environment": "^6.1.0 || ^7.2.0" | ||||
|                 "orchestra/testbench-core": "^9.12.0 || ^10.1", | ||||
|                 "pestphp/pest": "^3.8.0", | ||||
|                 "sebastian/environment": "^7.2.0 || ^8.0" | ||||
|             }, | ||||
|             "type": "library", | ||||
|             "extra": { | ||||
| @@ -4059,7 +4060,7 @@ | ||||
|                     "type": "patreon" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2025-03-14T22:37:40+00:00" | ||||
|             "time": "2025-04-03T14:33:09+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "nunomaduro/termwind", | ||||
| @@ -6360,16 +6361,16 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "spatie/laravel-package-tools", | ||||
|             "version": "1.92.0", | ||||
|             "version": "1.92.4", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/spatie/laravel-package-tools.git", | ||||
|                 "reference": "dd46cd0ed74015db28822d88ad2e667f4496a6f6" | ||||
|                 "reference": "d20b1969f836d210459b78683d85c9cd5c5f508c" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/dd46cd0ed74015db28822d88ad2e667f4496a6f6", | ||||
|                 "reference": "dd46cd0ed74015db28822d88ad2e667f4496a6f6", | ||||
|                 "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/d20b1969f836d210459b78683d85c9cd5c5f508c", | ||||
|                 "reference": "d20b1969f836d210459b78683d85c9cd5c5f508c", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -6380,6 +6381,7 @@ | ||||
|                 "mockery/mockery": "^1.5", | ||||
|                 "orchestra/testbench": "^7.7|^8.0|^9.0|^10.0", | ||||
|                 "pestphp/pest": "^1.23|^2.1|^3.1", | ||||
|                 "phpunit/php-code-coverage": "^9.0|^10.0|^11.0", | ||||
|                 "phpunit/phpunit": "^9.5.24|^10.5|^11.5", | ||||
|                 "spatie/pest-plugin-test-time": "^1.1|^2.2" | ||||
|             }, | ||||
| @@ -6408,7 +6410,7 @@ | ||||
|             ], | ||||
|             "support": { | ||||
|                 "issues": "https://github.com/spatie/laravel-package-tools/issues", | ||||
|                 "source": "https://github.com/spatie/laravel-package-tools/tree/1.92.0" | ||||
|                 "source": "https://github.com/spatie/laravel-package-tools/tree/1.92.4" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -6416,7 +6418,7 @@ | ||||
|                     "type": "github" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2025-03-27T08:34:10+00:00" | ||||
|             "time": "2025-04-11T15:27:14+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "spatie/period", | ||||
| @@ -10028,16 +10030,16 @@ | ||||
|     "packages-dev": [ | ||||
|         { | ||||
|             "name": "barryvdh/laravel-debugbar", | ||||
|             "version": "v3.15.2", | ||||
|             "version": "v3.15.3", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/barryvdh/laravel-debugbar.git", | ||||
|                 "reference": "0bc1e1361e7fffc2be156f46ad1fba6927c01729" | ||||
|                 "reference": "4ccab20844d18c5af08b68d310e7151a791c3037" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/0bc1e1361e7fffc2be156f46ad1fba6927c01729", | ||||
|                 "reference": "0bc1e1361e7fffc2be156f46ad1fba6927c01729", | ||||
|                 "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/4ccab20844d18c5af08b68d310e7151a791c3037", | ||||
|                 "reference": "4ccab20844d18c5af08b68d310e7151a791c3037", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -10048,9 +10050,6 @@ | ||||
|                 "php-debugbar/php-debugbar": "~2.1.1", | ||||
|                 "symfony/finder": "^6|^7" | ||||
|             }, | ||||
|             "conflict": { | ||||
|                 "maximebf/debugbar": "*" | ||||
|             }, | ||||
|             "require-dev": { | ||||
|                 "mockery/mockery": "^1.3.3", | ||||
|                 "orchestra/testbench-dusk": "^7|^8|^9|^10", | ||||
| @@ -10100,7 +10099,7 @@ | ||||
|             ], | ||||
|             "support": { | ||||
|                 "issues": "https://github.com/barryvdh/laravel-debugbar/issues", | ||||
|                 "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.15.2" | ||||
|                 "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.15.3" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -10112,7 +10111,7 @@ | ||||
|                     "type": "github" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2025-02-25T15:25:22+00:00" | ||||
|             "time": "2025-04-08T15:11:06+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "barryvdh/laravel-ide-helper", | ||||
| @@ -10262,16 +10261,16 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "cloudcreativity/json-api-testing", | ||||
|             "version": "v6.1.0", | ||||
|             "version": "v6.2.0", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/cloudcreativity/json-api-testing.git", | ||||
|                 "reference": "6c7a09b75e4ea250983d5b80f6120f15db9914cb" | ||||
|                 "reference": "bb2ff0a87013d40781ca7f959023491d6f1b4ed2" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/cloudcreativity/json-api-testing/zipball/6c7a09b75e4ea250983d5b80f6120f15db9914cb", | ||||
|                 "reference": "6c7a09b75e4ea250983d5b80f6120f15db9914cb", | ||||
|                 "url": "https://api.github.com/repos/cloudcreativity/json-api-testing/zipball/bb2ff0a87013d40781ca7f959023491d6f1b4ed2", | ||||
|                 "reference": "bb2ff0a87013d40781ca7f959023491d6f1b4ed2", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -10279,7 +10278,7 @@ | ||||
|                 "illuminate/contracts": "^10.0|^11.0|^12.0", | ||||
|                 "illuminate/support": "^10.0|^11.0|^12.0", | ||||
|                 "php": "^8.2", | ||||
|                 "phpunit/phpunit": "^10.5|^11.0" | ||||
|                 "phpunit/phpunit": "^10.5|^11.0|^12.0" | ||||
|             }, | ||||
|             "type": "library", | ||||
|             "extra": { | ||||
| @@ -10314,9 +10313,9 @@ | ||||
|             ], | ||||
|             "support": { | ||||
|                 "issues": "https://github.com/cloudcreativity/json-api/issues", | ||||
|                 "source": "https://github.com/cloudcreativity/json-api-testing/tree/v6.1.0" | ||||
|                 "source": "https://github.com/cloudcreativity/json-api-testing/tree/v6.2.0" | ||||
|             }, | ||||
|             "time": "2025-02-24T20:34:56+00:00" | ||||
|             "time": "2025-04-09T19:15:46+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "composer/class-map-generator", | ||||
| @@ -10586,16 +10585,16 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "iamcal/sql-parser", | ||||
|             "version": "v0.5", | ||||
|             "version": "v0.6", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/iamcal/SQLParser.git", | ||||
|                 "reference": "644fd994de3b54e5d833aecf406150aa3b66ca88" | ||||
|                 "reference": "947083e2dca211a6f12fb1beb67a01e387de9b62" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/iamcal/SQLParser/zipball/644fd994de3b54e5d833aecf406150aa3b66ca88", | ||||
|                 "reference": "644fd994de3b54e5d833aecf406150aa3b66ca88", | ||||
|                 "url": "https://api.github.com/repos/iamcal/SQLParser/zipball/947083e2dca211a6f12fb1beb67a01e387de9b62", | ||||
|                 "reference": "947083e2dca211a6f12fb1beb67a01e387de9b62", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require-dev": { | ||||
| @@ -10621,46 +10620,46 @@ | ||||
|             "description": "MySQL schema parser", | ||||
|             "support": { | ||||
|                 "issues": "https://github.com/iamcal/SQLParser/issues", | ||||
|                 "source": "https://github.com/iamcal/SQLParser/tree/v0.5" | ||||
|                 "source": "https://github.com/iamcal/SQLParser/tree/v0.6" | ||||
|             }, | ||||
|             "time": "2024-03-22T22:46:32+00:00" | ||||
|             "time": "2025-03-17T16:59:46+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "larastan/larastan", | ||||
|             "version": "v3.2.0", | ||||
|             "version": "v3.3.1", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/larastan/larastan.git", | ||||
|                 "reference": "d84d5a3b6536a586899ad6855a3e098473703690" | ||||
|                 "reference": "58bee8be51daf12d78ed0a909be3b205607d2f27" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/larastan/larastan/zipball/d84d5a3b6536a586899ad6855a3e098473703690", | ||||
|                 "reference": "d84d5a3b6536a586899ad6855a3e098473703690", | ||||
|                 "url": "https://api.github.com/repos/larastan/larastan/zipball/58bee8be51daf12d78ed0a909be3b205607d2f27", | ||||
|                 "reference": "58bee8be51daf12d78ed0a909be3b205607d2f27", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
|                 "ext-json": "*", | ||||
|                 "iamcal/sql-parser": "^0.5.0", | ||||
|                 "illuminate/console": "^11.41.3 || ^12.0", | ||||
|                 "illuminate/container": "^11.41.3 || ^12.0", | ||||
|                 "illuminate/contracts": "^11.41.3 || ^12.0", | ||||
|                 "illuminate/database": "^11.41.3 || ^12.0", | ||||
|                 "illuminate/http": "^11.41.3 || ^12.0", | ||||
|                 "illuminate/pipeline": "^11.41.3 || ^12.0", | ||||
|                 "illuminate/support": "^11.41.3 || ^12.0", | ||||
|                 "iamcal/sql-parser": "^0.6.0", | ||||
|                 "illuminate/console": "^11.44.2 || ^12.4.1", | ||||
|                 "illuminate/container": "^11.44.2 || ^12.4.1", | ||||
|                 "illuminate/contracts": "^11.44.2 || ^12.4.1", | ||||
|                 "illuminate/database": "^11.44.2 || ^12.4.1", | ||||
|                 "illuminate/http": "^11.44.2 || ^12.4.1", | ||||
|                 "illuminate/pipeline": "^11.44.2 || ^12.4.1", | ||||
|                 "illuminate/support": "^11.44.2 || ^12.4.1", | ||||
|                 "php": "^8.2", | ||||
|                 "phpstan/phpstan": "^2.1.3" | ||||
|                 "phpstan/phpstan": "^2.1.11" | ||||
|             }, | ||||
|             "require-dev": { | ||||
|                 "doctrine/coding-standard": "^12.0", | ||||
|                 "laravel/framework": "^11.41.3 || ^12.0", | ||||
|                 "mockery/mockery": "^1.6", | ||||
|                 "nikic/php-parser": "^5.3", | ||||
|                 "orchestra/canvas": "^v9.1.3 || ^10.0", | ||||
|                 "orchestra/testbench-core": "^9.5.2 || ^10.0", | ||||
|                 "phpstan/phpstan-deprecation-rules": "^2.0.0", | ||||
|                 "phpunit/phpunit": "^10.5.35 || ^11.3.6" | ||||
|                 "laravel/framework": "^11.44.2 || ^12.7.2", | ||||
|                 "mockery/mockery": "^1.6.12", | ||||
|                 "nikic/php-parser": "^5.4", | ||||
|                 "orchestra/canvas": "^v9.2.2 || ^10.0.1", | ||||
|                 "orchestra/testbench-core": "^9.12.0 || ^10.1", | ||||
|                 "phpstan/phpstan-deprecation-rules": "^2.0.1", | ||||
|                 "phpunit/phpunit": "^10.5.35 || ^11.5.15" | ||||
|             }, | ||||
|             "suggest": { | ||||
|                 "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" | ||||
| @@ -10708,15 +10707,19 @@ | ||||
|             ], | ||||
|             "support": { | ||||
|                 "issues": "https://github.com/larastan/larastan/issues", | ||||
|                 "source": "https://github.com/larastan/larastan/tree/v3.2.0" | ||||
|                 "source": "https://github.com/larastan/larastan/tree/v3.3.1" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
|                     "url": "https://github.com/canvural", | ||||
|                     "type": "github" | ||||
|                 }, | ||||
|                 { | ||||
|                     "url": "https://github.com/nunomaduro", | ||||
|                     "type": "github" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2025-03-14T21:54:26+00:00" | ||||
|             "time": "2025-04-03T20:08:04+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "laravel-json-api/testing", | ||||
| @@ -11698,16 +11701,16 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "phpunit/phpunit", | ||||
|             "version": "11.5.15", | ||||
|             "version": "11.5.17", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/sebastianbergmann/phpunit.git", | ||||
|                 "reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c" | ||||
|                 "reference": "fd2e863a2995cdfd864fb514b5e0b28b09895b5c" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c", | ||||
|                 "reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c", | ||||
|                 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fd2e863a2995cdfd864fb514b5e0b28b09895b5c", | ||||
|                 "reference": "fd2e863a2995cdfd864fb514b5e0b28b09895b5c", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -11779,7 +11782,7 @@ | ||||
|             "support": { | ||||
|                 "issues": "https://github.com/sebastianbergmann/phpunit/issues", | ||||
|                 "security": "https://github.com/sebastianbergmann/phpunit/security/policy", | ||||
|                 "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.15" | ||||
|                 "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.17" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -11795,7 +11798,7 @@ | ||||
|                     "type": "tidelift" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2025-03-23T16:02:11+00:00" | ||||
|             "time": "2025-04-08T07:59:11+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "sebastian/cli-parser", | ||||
|   | ||||
| @@ -78,7 +78,7 @@ return [ | ||||
|         'running_balance_column' => env('USE_RUNNING_BALANCE', false), | ||||
|         // see cer.php for exchange rates feature flag.
 | ||||
|     ], | ||||
|     'version'                      => 'develop/2025-04-03', | ||||
|     'version'                      => 'develop/2025-04-11', | ||||
|     'api_version'                  => '2.1.0', // field is no longer used.
 | ||||
|     'db_version'                   => 25, | ||||
| 
 | ||||
|   | ||||
| @@ -44,7 +44,12 @@ return [ | ||||
|             'username'          => envNonEmpty('MAIL_USERNAME', 'user@example.com'), | ||||
|             'password'          => envNonEmpty('MAIL_PASSWORD', 'password'), | ||||
|             'timeout'           => null, | ||||
|             'verify_peer' => null !== env('MAIL_ENCRYPTION'), | ||||
|             'scheme'            => env('MAIL_SCHEME'), | ||||
|             'url'               => env('MAIL_URL'), | ||||
|             'local_domain'      => env('MAIL_EHLO_DOMAIN', parse_url(env('APP_URL', 'http://localhost'), PHP_URL_HOST)), | ||||
|             'verify_peer'       => env('MAIL_VERIFY_PEER', true), | ||||
|             'allow_self_signed' => env('MAIL_ALLOW_SELF_SIGNED', false), | ||||
|             'verify_peer_name'  => env('MAIL_VERIFY_PEER_NAME', true), | ||||
|         ], | ||||
|         'mailersend' => [ | ||||
|             'transport' => 'mailersend', | ||||
|   | ||||
							
								
								
									
										72
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										72
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -2859,9 +2859,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@types/babel__generator": { | ||||
|             "version": "7.6.8", | ||||
|             "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", | ||||
|             "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", | ||||
|             "version": "7.27.0", | ||||
|             "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", | ||||
|             "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", | ||||
|             "dev": true, | ||||
|             "license": "MIT", | ||||
|             "dependencies": { | ||||
| @@ -4104,9 +4104,9 @@ | ||||
|             "license": "ISC" | ||||
|         }, | ||||
|         "node_modules/bootstrap": { | ||||
|             "version": "5.3.3", | ||||
|             "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", | ||||
|             "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", | ||||
|             "version": "5.3.5", | ||||
|             "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.5.tgz", | ||||
|             "integrity": "sha512-ct1CHKtiobRimyGzmsSldEtM03E8fcEX4Tb3dGXz1V8faRwM50+vfHwTzOxB3IlKO7m+9vTH3s/3C6T2EAPeTA==", | ||||
|             "funding": [ | ||||
|                 { | ||||
|                     "type": "github", | ||||
| @@ -4130,15 +4130,15 @@ | ||||
|             "license": "MIT" | ||||
|         }, | ||||
|         "node_modules/bootstrap5-autocomplete": { | ||||
|             "version": "1.1.38", | ||||
|             "resolved": "https://registry.npmjs.org/bootstrap5-autocomplete/-/bootstrap5-autocomplete-1.1.38.tgz", | ||||
|             "integrity": "sha512-gw/66uyiKL+XioGxnIdzFwyvma/KlbD/hNIwnIAhzb1TNTWSFURPqOzMXaDuw2vD0DCtASjsJm4uydAzlaDaZQ==", | ||||
|             "version": "1.1.39", | ||||
|             "resolved": "https://registry.npmjs.org/bootstrap5-autocomplete/-/bootstrap5-autocomplete-1.1.39.tgz", | ||||
|             "integrity": "sha512-jsOqej5/hI2fTSlYqbuVt7EbJcGrUXH984jiNlgUk+nbh46vIcVimo/eIg0iqcDqs/sJvXD9O38XGV2XpVU7sA==", | ||||
|             "license": "MIT" | ||||
|         }, | ||||
|         "node_modules/bootstrap5-tags": { | ||||
|             "version": "1.7.7", | ||||
|             "resolved": "https://registry.npmjs.org/bootstrap5-tags/-/bootstrap5-tags-1.7.7.tgz", | ||||
|             "integrity": "sha512-1rgN2OLM9PQlQxeKUFUN9Tay246Zn7rK0p6p+ZaG2Q2VXPkZaZ+3EDYh3LOofvlHS50mL/Uthk9AoOxtdz6drA==", | ||||
|             "version": "1.7.8", | ||||
|             "resolved": "https://registry.npmjs.org/bootstrap5-tags/-/bootstrap5-tags-1.7.8.tgz", | ||||
|             "integrity": "sha512-KdJ3Z5M/lMCW8VFXOr58NDes/k8mJ/5NRGRtVky1lIAcK/1BQ5WCtbDGsM9KujXJ9vNhwr6XMe+Fh//fr140MA==", | ||||
|             "license": "MIT" | ||||
|         }, | ||||
|         "node_modules/brace-expansion": { | ||||
| @@ -4420,9 +4420,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/caniuse-lite": { | ||||
|             "version": "1.0.30001709", | ||||
|             "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001709.tgz", | ||||
|             "integrity": "sha512-NgL3vUTnDrPCZ3zTahp4fsugQ4dc7EKTSzwQDPEel6DMoMnfH2jhry9n2Zm8onbSR+f/QtKHFOA+iAQu4kbtWA==", | ||||
|             "version": "1.0.30001713", | ||||
|             "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001713.tgz", | ||||
|             "integrity": "sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==", | ||||
|             "dev": true, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -5635,9 +5635,9 @@ | ||||
|             "license": "MIT" | ||||
|         }, | ||||
|         "node_modules/electron-to-chromium": { | ||||
|             "version": "1.5.130", | ||||
|             "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.130.tgz", | ||||
|             "integrity": "sha512-Ou2u7L9j2XLZbhqzyX0jWDj6gA8D3jIfVzt4rikLf3cGBa0VdReuFimBKS9tQJA4+XpeCxj1NoWlfBXzbMa9IA==", | ||||
|             "version": "1.5.136", | ||||
|             "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.136.tgz", | ||||
|             "integrity": "sha512-kL4+wUTD7RSA5FHx5YwWtjDnEEkIIikFgWHR4P6fqjw1PPLlqYkxeOb++wAauAssat0YClCy8Y3C5SxgSkjibQ==", | ||||
|             "dev": true, | ||||
|             "license": "ISC" | ||||
|         }, | ||||
| @@ -6915,9 +6915,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/http-parser-js": { | ||||
|             "version": "0.5.9", | ||||
|             "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.9.tgz", | ||||
|             "integrity": "sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==", | ||||
|             "version": "0.5.10", | ||||
|             "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", | ||||
|             "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", | ||||
|             "dev": true, | ||||
|             "license": "MIT" | ||||
|         }, | ||||
| @@ -6937,9 +6937,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/http-proxy-middleware": { | ||||
|             "version": "2.0.7", | ||||
|             "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", | ||||
|             "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", | ||||
|             "version": "2.0.9", | ||||
|             "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", | ||||
|             "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", | ||||
|             "dev": true, | ||||
|             "license": "MIT", | ||||
|             "dependencies": { | ||||
| @@ -10083,9 +10083,9 @@ | ||||
|             "license": "MIT" | ||||
|         }, | ||||
|         "node_modules/sass": { | ||||
|             "version": "1.86.2", | ||||
|             "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.2.tgz", | ||||
|             "integrity": "sha512-Rpfn0zAIDqvnSb2DihJTDFjbhqLHu91Wqac9rxontWk7R+2txcPjuujMqu1eeoezh5kAblVCS5EdFdyr0Jmu+w==", | ||||
|             "version": "1.86.3", | ||||
|             "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.3.tgz", | ||||
|             "integrity": "sha512-iGtg8kus4GrsGLRDLRBRHY9dNVA78ZaS7xr01cWnS7PEMQyFtTqBiyCrfpTYTZXRWM94akzckYjh8oADfFNTzw==", | ||||
|             "dev": true, | ||||
|             "license": "MIT", | ||||
|             "dependencies": { | ||||
| @@ -10661,9 +10661,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/std-env": { | ||||
|             "version": "3.8.1", | ||||
|             "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.1.tgz", | ||||
|             "integrity": "sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==", | ||||
|             "version": "3.9.0", | ||||
|             "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", | ||||
|             "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", | ||||
|             "dev": true, | ||||
|             "license": "MIT" | ||||
|         }, | ||||
| @@ -11304,9 +11304,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/vite": { | ||||
|             "version": "6.2.4", | ||||
|             "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.4.tgz", | ||||
|             "integrity": "sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==", | ||||
|             "version": "6.2.6", | ||||
|             "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.6.tgz", | ||||
|             "integrity": "sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==", | ||||
|             "dev": true, | ||||
|             "license": "MIT", | ||||
|             "dependencies": { | ||||
| @@ -11593,9 +11593,9 @@ | ||||
|             "license": "BSD-2-Clause" | ||||
|         }, | ||||
|         "node_modules/webpack": { | ||||
|             "version": "5.98.0", | ||||
|             "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", | ||||
|             "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", | ||||
|             "version": "5.99.5", | ||||
|             "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.5.tgz", | ||||
|             "integrity": "sha512-q+vHBa6H9qwBLUlHL4Y7L0L1/LlyBKZtS9FHNCQmtayxjI5RKC9yD8gpvLeqGv5lCQp1Re04yi0MF40pf30Pvg==", | ||||
|             "dev": true, | ||||
|             "license": "MIT", | ||||
|             "dependencies": { | ||||
|   | ||||
| @@ -80,12 +80,19 @@ function drawChart() { | ||||
|  | ||||
|                 // left to spend | ||||
|                 if (key.substring(0, 17) === 'left-to-spend-in-') { | ||||
|                     if(true === data[key].no_available_budgets) { | ||||
|                         left_to_spend_top.push('---'); | ||||
|                         left_to_spend_bottom.push('---'); | ||||
|                         keepGreen = true; | ||||
|                     } | ||||
|                     if(false === data[key].no_available_budgets) { | ||||
|                         left_to_spend_top.push(data[key].value_parsed); | ||||
|                         left_to_spend_bottom.push(data[key].sub_title); | ||||
|                         if (parseFloat(data[key].monetary_value) > 0) { | ||||
|                             keepGreen = true; | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 // net worth | ||||
|                 if (key.substring(0, 13) === 'net-worth-in-') { | ||||
|   | ||||
| @@ -30,7 +30,7 @@ | ||||
|         "apply_rules_checkbox": "Applica le regole", | ||||
|         "fire_webhooks_checkbox": "Esegui webhook", | ||||
|         "no_budget_pointer": "Sembra che tu non abbia ancora dei budget. Dovresti crearne alcuni nella pagina dei <a href=\"budgets\">budget<\/a>. I budget possono aiutarti a tenere traccia delle spese.", | ||||
|         "no_bill_pointer": "Sembra che tu non abbia ancora un abbonamento. Dovresti crearne alcuni sulla pagina <a href=\"subscriptions\">abbonamento<\/a>. Gli abbonamenti possono aiutarti a tenere traccia delle spese.", | ||||
|         "no_bill_pointer": "Sembra che tu non abbia ancora un pagamento ricorrente. Dovresti crearne alcuni sulla pagina <a href=\"subscriptions\">pagamenti ricorrenti<\/a>. I pagamenti ricorrenti possono aiutarti a tenere traccia delle spese.", | ||||
|         "source_account": "Conto di origine", | ||||
|         "hidden_fields_preferences": "Puoi abilitare maggiori opzioni per le transazioni nelle tue <a href=\"preferences\">impostazioni<\/a>.", | ||||
|         "destination_account": "Conto destinazione", | ||||
|   | ||||
| @@ -3,8 +3,8 @@ | ||||
|         "administrations_page_title": "\u8d22\u52a1\u7ba1\u7406", | ||||
|         "administrations_index_menu": "\u8d22\u52a1\u7ba1\u7406", | ||||
|         "temp_administrations_introduction": "Firefly III \u4e0d\u4e45\u5c06\u80fd\u591f\u7ba1\u7406\u591a\u4e2a\u8d22\u52a1\u7ba1\u7406\u3002 \u73b0\u5728\uff0c\u4f60\u53ea\u80fd\u6709\u4e00\u4e2a\u8d22\u52a1\u7ba1\u7406\u3002\u4f60\u53ef\u4ee5\u8bbe\u7f6e\u8fd9\u4e2a\u8d22\u52a1\u7ba1\u7406\u7684\u6807\u9898\u53ca\u5176\u5f53\u5730\u8d27\u5e01\u3002 \u8fd9\u5c06\u53d6\u4ee3\u60a8\u5148\u524d\u8bbe\u7f6e\u7684\u201c\u9ed8\u8ba4\u8d27\u5e01\u201d\u3002 \u8fd9\u79cd\u8bbe\u7f6e\u73b0\u5728\u4e0e\u8d22\u52a1\u7ba1\u7406\u6302\u94a9\uff0c\u6bcf\u4e2a\u7ba1\u7406\u53ef\u4ee5\u6709\u4e0d\u540c\u7684\u8bbe\u7f6e\u3002", | ||||
|         "administration_currency_form_help": "It may take a long time for the page to load if you change the native currency because transaction may need to be converted to your (new) native currency.", | ||||
|         "administrations_page_edit_sub_title_js": "Edit financial administration \"{title}\"", | ||||
|         "administration_currency_form_help": "\u5982\u679c\u60a8\u66f4\u6539\u672c\u5730\u8d27\u5e01\uff0c\u9875\u9762\u52a0\u8f7d\u53ef\u80fd\u9700\u8981\u5f88\u957f\u65f6\u95f4\uff0c\u56e0\u4e3a\u4ea4\u6613\u53ef\u80fd\u9700\u8981\u8f6c\u6362\u4e3a\u60a8\u7684(\u65b0)\u672c\u5730\u8d27\u5e01\u3002", | ||||
|         "administrations_page_edit_sub_title_js": "\u7f16\u8f91\u8d22\u52a1\u7ba1\u7406{title}", | ||||
|         "table": "\u8868\u683c", | ||||
|         "welcome_back": "\u4eca\u5929\u7406\u8d22\u4e86\u5417\uff1f", | ||||
|         "flash_error": "\u9519\u8bef\uff01", | ||||
| @@ -140,12 +140,12 @@ | ||||
|         "visit_webhook_url": "\u8bbf\u95ee webhook URL", | ||||
|         "reset_webhook_secret": "\u91cd\u7f6e webhook \u5bc6\u94a5", | ||||
|         "header_exchange_rates": "\u6c47\u7387", | ||||
|         "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/explanation\/financial-concepts\/exchange-rates\/\">the documentation<\/a>.", | ||||
|         "exchange_rates_from_to": "Between {from} and {to} (and the other way around)", | ||||
|         "exchange_rates_intro_rates": "Firefly III uses the following exchange rates. The inverse is automatically calculated when it is not provided. If no exchange rate exists for the date of the transaction, Firefly III will go back in time to find one. If none are present, the rate \"1\" will be used.", | ||||
|         "exchange_rates_intro": "Frefly III \u652f\u6301\u4e0b\u8f7d\u548c\u4f7f\u7528\u6c47\u7387\u3002\u8bf7\u5728 <a href=\"https:\/\/docs.firefly-iii.org\/explanation\/financial-concepts\/exchange-rates\/\">\u8fd9\u4efd\u6587\u6863<\/a>\u4e2d\u9605\u8bfb\u66f4\u591a\u3002", | ||||
|         "exchange_rates_from_to": "\u4ece {from} \u5230 {to} \u7684\uff08\u4ee5\u53ca\u53cd\u5411\uff09", | ||||
|         "exchange_rates_intro_rates": "Firefly III \u91c7\u7528\u4ee5\u4e0b\u6c47\u7387\u3002\u5982\u679c\u6ca1\u6709\u63d0\u4f9b\u53cd\u5411\u6c47\u7387\u5219\u81ea\u52a8\u8ba1\u7b97\u3002 \u5982\u679c\u4ea4\u6613\u65e5\u671f\u4e0d\u5b58\u5728\u6c47\u7387\uff0cFifrefly III \u5c06\u5bfb\u627e\u524d\u4e00\u4e2a\u53ef\u7528\u65e5\u671f\u7684\u6c47\u7387\u3002 \u5982\u679c\u6ca1\u6709\uff0c\u5c06\u6309\u6c47\u7387\u4e3a 1 \u8fdb\u884c\u8ba1\u7b97\u3002", | ||||
|         "header_exchange_rates_rates": "\u6c47\u7387", | ||||
|         "header_exchange_rates_table": "Table with exchange rates", | ||||
|         "help_rate_form": "On this day, how many {to} will you get for one {from}?", | ||||
|         "header_exchange_rates_table": "\u6c47\u7387\u8868", | ||||
|         "help_rate_form": "\u5728\u8fd9\u4e00\u5929\uff0c\u4f60\u80fd\u4ece\u6bcf 1 \u4e2a\u5355\u4f4d\u7684 {from} \u83b7\u5f97\u591a\u5c11 {to}\uff1f", | ||||
|         "add_new_rate": "\u6dfb\u52a0\u65b0\u6c47\u7387", | ||||
|         "save_new_rate": "\u4fdd\u5b58\u65b0\u6c47\u7387" | ||||
|     }, | ||||
|   | ||||
| @@ -64,8 +64,8 @@ return [ | ||||
| 
 | ||||
|     // unknown user login attempt
 | ||||
|     'unknown_user_subject'                        => 'An unknown user tried to log in', | ||||
|     'unknown_user_body'                           => 'An unknown user tried to log in to Firefly III. The email address they used was ":address".', | ||||
|     'unknown_user_message'                        => 'The email address they used was ":address".', | ||||
|     'unknown_user_body'                           => 'An unknown user (:ip) tried to log in to Firefly III. The email address they used was ":address".', | ||||
|     'unknown_user_message'                        => 'The email address they (:ip) used was ":address".', | ||||
| 
 | ||||
|     // known user login attempt
 | ||||
|     'failed_login_subject'                        => 'Firefly III detected a failed login attempt', | ||||
|   | ||||
		Reference in New Issue
	
	Block a user