Browse Source

🤖 Auto commit for release 'develop' on 2025-07-20

pull/907/head
JC5 3 months ago
parent
commit
ef5ad71d06
No known key found for this signature in database GPG Key ID: 910CF2B5E8B6CC6E
  1. 4
      app/Console/AutoImports.php
  2. 1
      app/Console/Commands/ShowVersion.php
  3. 1
      app/Http/Controllers/DebugController.php
  4. 4
      app/Http/Controllers/Import/ConversionController.php
  5. 1
      app/Http/Controllers/Import/File/RoleController.php
  6. 1
      app/Http/Controllers/IndexController.php
  7. 3
      app/Http/Middleware/IsReadyForStep.php
  8. 12
      app/Http/Request/ConfigurationPostRequest.php
  9. 1
      app/Services/CSV/Conversion/Routine/CSVFileProcessor.php
  10. 2
      app/Services/CSV/Conversion/Routine/ColumnValue.php
  11. 22
      app/Services/CSV/Conversion/Routine/LineProcessor.php
  12. 10
      app/Services/CSV/Conversion/Routine/PseudoTransactionProcessor.php
  13. 2
      app/Services/CSV/Converter/CleanId.php
  14. 4
      app/Services/CSV/Converter/CleanInteger.php
  15. 2
      app/Services/CSV/Converter/CleanUrl.php
  16. 4
      app/Services/CSV/Converter/ConverterInterface.php
  17. 2
      app/Services/CSV/Converter/Iban.php
  18. 2
      app/Services/CSV/Mapper/ExpenseRevenueAccounts.php
  19. 9
      app/Services/CSV/Mapper/GetAccounts.php
  20. 8
      app/Services/CSV/Roles/RoleService.php
  21. 8
      app/Services/Camt/Conversion/TransactionExtractor.php
  22. 2
      app/Services/Camt/Conversion/TransactionMapper.php
  23. 6
      app/Services/Camt/Transaction.php
  24. 2
      app/Services/Nordigen/Conversion/RoutineManager.php
  25. 4
      app/Services/Nordigen/Request/GetAccountBalanceRequest.php
  26. 1
      app/Services/Nordigen/Request/ListAccountsRequest.php
  27. 4
      app/Services/SimpleFIN/Conversion/AccountMapper.php
  28. 4
      app/Services/Spectre/Response/PutRefreshConnectionResponse.php
  29. 6
      changelog.md
  30. 4
      config/importer.php
  31. 214
      package-lock.json

4
app/Console/AutoImports.php

@ -662,7 +662,7 @@ trait AutoImports
protected function isNothingDownloaded(): bool
{
foreach ($this->conversionErrors as $errors) {
if (array_any($errors, fn($error) => str_contains($error, '[a111]'))) {
if (array_any($errors, fn ($error) => str_contains($error, '[a111]'))) {
return true;
}
}
@ -673,7 +673,7 @@ trait AutoImports
protected function isExpiredAgreement(): bool
{
foreach ($this->conversionErrors as $errors) {
if (array_any($errors, fn($error) => str_contains($error, 'EUA') && str_contains($error, 'expired'))) {
if (array_any($errors, fn ($error) => str_contains($error, 'EUA') && str_contains($error, 'expired'))) {
return true;
}
}

1
app/Console/Commands/ShowVersion.php

@ -26,6 +26,7 @@ declare(strict_types=1);
namespace App\Console\Commands;
use Illuminate\Console\Command;
use const PHP_SAPI;
/**

1
app/Http/Controllers/DebugController.php

@ -33,6 +33,7 @@ use Illuminate\View\View;
use Monolog\Handler\RotatingFileHandler;
use Monolog\Logger;
use Exception;
use const PHP_SAPI;
class DebugController extends Controller

4
app/Http/Controllers/Import/ConversionController.php

@ -119,7 +119,7 @@ class ConversionController extends Controller
throw new ImporterErrorException(sprintf('Not a supported flow: "%s"', $flow));
}
/** @var RoutineManagerInterface|null $routine */
/** @var null|RoutineManagerInterface $routine */
if ('file' === $flow) {
$contentType = $configuration->getContentType();
if ('unknown' === $contentType || 'csv' === $contentType) {
@ -250,7 +250,7 @@ class ConversionController extends Controller
throw new ImporterErrorException(sprintf('Not a supported flow: "%s"', $flow));
}
/** @var RoutineManagerInterface|null $routine */
/** @var null|RoutineManagerInterface $routine */
if ('file' === $flow) {
$contentType = $configuration->getContentType();
if ('unknown' === $contentType || 'csv' === $contentType) {

1
app/Http/Controllers/Import/File/RoleController.php

@ -212,6 +212,7 @@ class RoleController extends Controller
private function getFieldsForLevel(string $level): array
{
$allFields = config('camt.fields');
return array_filter($allFields, function ($field) use ($level) {
return $level === $field['level'];
});

1
app/Http/Controllers/IndexController.php

@ -28,7 +28,6 @@ namespace App\Http\Controllers;
use App\Services\Session\Constants;
use App\Services\Shared\Authentication\SecretManager;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Log;

3
app/Http/Middleware/IsReadyForStep.php

@ -337,6 +337,7 @@ trait IsReadyForStep
switch (self::STEP) {
default:
throw new ImporterErrorException(sprintf('isReadyForSimpleFINStep: Cannot handle SimpleFIN step "%s"', self::STEP));
case 'authenticate':
// simpleFIN needs no authentication.
return false;
@ -693,7 +694,7 @@ trait IsReadyForStep
{
Log::debug(sprintf('redirectToBasicStep("%s")', self::STEP));
/** @noinspection PhpSwitchStatementWitSingleBranchInspection */
// @noinspection PhpSwitchStatementWitSingleBranchInspection
switch (self::STEP) {
default:
throw new ImporterErrorException(sprintf('redirectToBasicStep: Cannot handle basic step "%s"', self::STEP));

12
app/Http/Request/ConfigurationPostRequest.php

@ -52,9 +52,9 @@ class ConfigurationPostRequest extends Request
]);
// Decode underscore-encoded account IDs back to original IDs with spaces
$doImport = $this->get('do_import') ?? [];
$accounts = $this->get('accounts') ?? [];
$newAccount = $this->get('new_account') ?? [];
$doImport = $this->get('do_import') ?? [];
$accounts = $this->get('accounts') ?? [];
$newAccount = $this->get('new_account') ?? [];
$decodedDoImport = [];
$decodedAccounts = [];
@ -203,9 +203,9 @@ class ConfigurationPostRequest extends Request
{
$validator->after(function (Validator $validator): void {
// validate all account info
$flow = request()->cookie(Constants::FLOW_COOKIE);
$data = $validator->getData(); // @phpstan-ignore-line
$doImport = $data['do_import'] ?? [];
$flow = request()->cookie(Constants::FLOW_COOKIE);
$data = $validator->getData(); // @phpstan-ignore-line
$doImport = $data['do_import'] ?? [];
if (0 === count($doImport) && 'file' !== $flow) {
$validator->errors()->add('do_import', 'You must select at least one account to import from.');
}

1
app/Services/CSV/Conversion/Routine/CSVFileProcessor.php

@ -72,6 +72,7 @@ class CSVFileProcessor
try {
$stmt = new Statement()->offset($offset);
/** @var ResultSet $records */
$records = $stmt->process($this->reader);
} catch (Exception $e) {

2
app/Services/CSV/Conversion/Routine/ColumnValue.php

@ -75,7 +75,7 @@ class ColumnValue
public function getParsedValue()
{
if (0 !== $this->mappedValue) {
/** @noinspection UnnecessaryCastingInspection */
// @noinspection UnnecessaryCastingInspection
return $this->mappedValue;
}

22
app/Services/CSV/Conversion/Routine/LineProcessor.php

@ -94,8 +94,8 @@ class LineProcessor
private function process(array $line): array
{
Log::debug(sprintf('[%s] Now in %s', config('importer.version'), __METHOD__));
$count = count($line);
$return = [];
$count = count($line);
$return = [];
foreach ($line as $columnIndex => $value) {
Log::debug(sprintf('Now at column %d/%d', $columnIndex + 1, $count));
$value = trim((string)$value);
@ -113,13 +113,13 @@ class LineProcessor
}
// is a mapped value present?
$mapped = $this->mapping[$columnIndex][$value] ?? 0;
$mapped = $this->mapping[$columnIndex][$value] ?? 0;
Log::debug(sprintf('ColumnIndex is %s', var_export($columnIndex, true)));
Log::debug(sprintf('Value is %s', var_export($value, true)));
// Log::debug('Local mapping (will not be printed)');
// the role might change because of the mapping.
$role = $this->getRoleForColumn($columnIndex, $mapped);
$appendValue = config(sprintf('csv.import_roles.%s.append_value', $originalRole));
$role = $this->getRoleForColumn($columnIndex, $mapped);
$appendValue = config(sprintf('csv.import_roles.%s.append_value', $originalRole));
if (null === $appendValue) {
$appendValue = false;
@ -127,7 +127,7 @@ class LineProcessor
// Log::debug(sprintf('Append value config: %s', sprintf('csv.import_roles.%s.append_value', $originalRole)));
$columnValue = new ColumnValue();
$columnValue = new ColumnValue();
$columnValue->setValue($value);
$columnValue->setRole($role);
$columnValue->setAppendValue($appendValue);
@ -140,7 +140,7 @@ class LineProcessor
$columnValue->setConfiguration($this->dateFormat);
}
$return[] = $columnValue;
$return[] = $columnValue;
}
// add a special column value for the "source"
$columnValue = new ColumnValue();
@ -148,7 +148,7 @@ class LineProcessor
$columnValue->setMappedValue(0);
$columnValue->setAppendValue(false);
$columnValue->setRole('original-source');
$return[] = $columnValue;
$return[] = $columnValue;
Log::debug(sprintf('Added column #%d to denote the original source.', count($return)));
return $return;
@ -165,7 +165,7 @@ class LineProcessor
*/
private function getRoleForColumn(int $column, int $mapped): string
{
$role = $this->roles[$column] ?? '_ignore';
$role = $this->roles[$column] ?? '_ignore';
if (0 === $mapped) {
Log::debug(sprintf('Column #%d with role "%s" is not mapped.', $column + 1, $role));
@ -178,7 +178,7 @@ class LineProcessor
return $role;
}
$roleMapping = [
$roleMapping = [
'account-id' => 'account-id',
'account-name' => 'account-id',
'account-iban' => 'account-id',
@ -203,7 +203,7 @@ class LineProcessor
if (!array_key_exists($role, $roleMapping)) {
throw new ImporterErrorException(sprintf('Cannot indicate new role for mapped role "%s"', $role)); // @codeCoverageIgnore
}
$newRole = $roleMapping[$role];
$newRole = $roleMapping[$role];
if ($newRole !== $role) {
Log::debug(sprintf('Role was "%s", but because of mapping (mapped to #%d), role becomes "%s"', $role, $mapped, $newRole));
}

10
app/Services/CSV/Conversion/Routine/PseudoTransactionProcessor.php

@ -73,14 +73,14 @@ class PseudoTransactionProcessor
if (null !== $accountId) {
// in cache perhaps?
$inCache = RequestCache::has($cacheKey, $token);
$inCache = RequestCache::has($cacheKey, $token);
if ($inCache) {
$this->defaultAccount = RequestCache::get($cacheKey, $token);
return;
}
$accountRequest = new GetAccountRequest($url, $token);
$accountRequest = new GetAccountRequest($url, $token);
$accountRequest->setVerify(config('importer.connection.verify'));
$accountRequest->setTimeOut(config('importer.connection.timeout'));
$accountRequest->setId($accountId);
@ -103,8 +103,8 @@ class PseudoTransactionProcessor
*/
private function getDefaultCurrency(): void
{
$url = SecretManager::getBaseUrl();
$token = SecretManager::getAccessToken();
$url = SecretManager::getBaseUrl();
$token = SecretManager::getAccessToken();
$currencyRequest = new GetCurrencyRequest($url, $token);
$currencyRequest->setVerify(config('importer.connection.verify'));
@ -155,7 +155,7 @@ class PseudoTransactionProcessor
$object->setTransactionCurrency($this->defaultCurrency);
}
$line = $object->process($line);
$line = $object->process($line);
}
Log::debug('Final transaction: ', $line);

2
app/Services/CSV/Converter/CleanId.php

@ -35,7 +35,7 @@ class CleanId implements ConverterInterface
/**
* Convert a value.
*/
public function convert(mixed $value): int|null
public function convert(mixed $value): ?int
{
Log::debug(sprintf('Now applying CleanId converter on "%s"', $value));
$value = (int) $value;

4
app/Services/CSV/Converter/CleanInteger.php

@ -32,10 +32,6 @@ class CleanInteger implements ConverterInterface
{
/**
* Convert a value.
*
* @param mixed $value
*
* @return int
*/
public function convert(mixed $value): int
{

2
app/Services/CSV/Converter/CleanUrl.php

@ -33,7 +33,7 @@ class CleanUrl implements ConverterInterface
/**
* Convert a value.
*/
public function convert(mixed $value): string|null
public function convert(mixed $value): ?string
{
$value = app('steam')->cleanStringAndNewlines($value);

4
app/Services/CSV/Converter/ConverterInterface.php

@ -31,10 +31,6 @@ interface ConverterInterface
{
/**
* Convert a value.
*
* @param mixed $value
*
* @return mixed
*/
public function convert(mixed $value): mixed;

2
app/Services/CSV/Converter/Iban.php

@ -53,7 +53,7 @@ class Iban implements ConverterInterface
public static function isValidIban(string $value): bool
{
Log::debug(sprintf('isValidIBAN("%s")', $value));
$value = strtoupper(trim( app('steam')->cleanStringAndNewlines($value)));
$value = strtoupper(trim(app('steam')->cleanStringAndNewlines($value)));
$value = str_replace("\x20", '', $value);
Log::debug(sprintf('Trim: isValidIBAN("%s")', $value));
$search = [' ', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];

2
app/Services/CSV/Mapper/ExpenseRevenueAccounts.php

@ -132,7 +132,7 @@ class ExpenseRevenueAccounts implements MapperInterface
}
// Sort each group
$newResult = [];
$newResult = [];
foreach ($result as $group => $array) {
asort($array, SORT_STRING);
$newResult[$group] = $array;

9
app/Services/CSV/Mapper/GetAccounts.php

@ -31,7 +31,6 @@ use GrumpyDictator\FFIIIApiSupport\Exceptions\ApiHttpException;
use GrumpyDictator\FFIIIApiSupport\Model\Account;
use GrumpyDictator\FFIIIApiSupport\Request\GetAccountsRequest;
use GrumpyDictator\FFIIIApiSupport\Response\GetAccountsResponse;
use GrumpyDictator\FFIIIApiSupport\Response\ValidationErrorResponse;
use Illuminate\Support\Facades\Log;
/**
@ -58,7 +57,7 @@ trait GetAccounts
$request->setType(GetAccountsRequest::ALL);
try {
/** @var GetAccountsResponse|null $response */
/** @var null|GetAccountsResponse $response */
$response = $request->get();
} catch (ApiHttpException $e) {
Log::error(sprintf('[%s]: %s', config('importer.version'), $e->getMessage()));
@ -110,7 +109,7 @@ trait GetAccounts
$request->setTimeOut(config('importer.connection.timeout'));
try {
/** @var GetAccountsResponse|null $response */
/** @var null|GetAccountsResponse $response */
$response = $request->get();
} catch (ApiHttpException $e) {
Log::error(sprintf('[%s]: %s', config('importer.version'), $e->getMessage()));
@ -180,7 +179,7 @@ trait GetAccounts
$result[$group] ??= [];
$result[$group][$account->id] = $name;
}
$newResult = [];
$newResult = [];
foreach ($result as $group => $array) {
asort($array, SORT_STRING);
$newResult[$group] = $array;
@ -215,7 +214,7 @@ trait GetAccounts
}
}
$newResult = [];
$newResult = [];
foreach ($result as $group => $array) {
asort($array, SORT_STRING);
$newResult[$group] = $array;

8
app/Services/CSV/Roles/RoleService.php

@ -98,7 +98,7 @@ class RoleService
try {
$stmt = new Statement()->limit(1)->offset(0);
$records = $stmt->process($reader);
$count = count($records->first());
$count = count($records->first());
Log::debug(sprintf('Role service: first row has %d columns', $count));
for ($i = 0; $i < $count; ++$i) {
$headers[] = sprintf('Column #%d', $i + 1);
@ -205,11 +205,11 @@ class RoleService
$count = count($entry->getTransactionDetails()); // count level D entries.
if (0 === $count) {
// TODO Create a single transaction, I guess?
$transactions[] = new Transaction( $camtMessage, $statement, $entry, []);
$transactions[] = new Transaction($camtMessage, $statement, $entry, []);
}
if (0 !== $count) {
foreach ($entry->getTransactionDetails() as $detail) {
$transactions[] = new Transaction( $camtMessage, $statement, $entry, [$detail]);
$transactions[] = new Transaction($camtMessage, $statement, $entry, [$detail]);
}
}
}
@ -222,7 +222,7 @@ class RoleService
break;
}
foreach ($fieldNames as $name) {
$name = (string)$name;
$name = (string)$name;
if (array_key_exists($name, $examples)) { // there is at least one example, so we can check how many
if (count($examples[$name]) > 5) { // there are already five examples, so jump to next field
continue;

8
app/Services/Camt/Conversion/TransactionExtractor.php

@ -46,19 +46,19 @@ class TransactionExtractor
if (0 !== $count) {
$handling = $this->configuration->getGroupedTransactionHandling();
if ('split' === $handling) {
$transactions[] = new Transaction( $message, $statement, $entry, $entry->getTransactionDetails());
$transactions[] = new Transaction($message, $statement, $entry, $entry->getTransactionDetails());
}
if ('single' === $handling) {
foreach ($entry->getTransactionDetails() as $detail) {
$transactions[] = new Transaction( $message, $statement, $entry, [$detail]);
$transactions[] = new Transaction($message, $statement, $entry, [$detail]);
}
}
if ('group' === $handling) {
if (1 === $count) {
$transactions[] = new Transaction( $message, $statement, $entry, $entry->getTransactionDetails());
$transactions[] = new Transaction($message, $statement, $entry, $entry->getTransactionDetails());
}
if ($count > 1) {
$transactions[] = new Transaction( $message, $statement, $entry, []);
$transactions[] = new Transaction($message, $statement, $entry, []);
}
}
}

2
app/Services/Camt/Conversion/TransactionMapper.php

@ -711,7 +711,7 @@ class TransactionMapper
if (array_key_exists($field, $current)) {
// there is a value...
// so we check all accounts for a match
if (array_any($this->allAccounts, fn($account) => $current[$field] === $account->{$accountIdentificationSuffix})) {
if (array_any($this->allAccounts, fn ($account) => $current[$field] === $account->{$accountIdentificationSuffix})) {
return true;
}
}

6
app/Services/Camt/Transaction.php

@ -429,9 +429,9 @@ class Transaction
// but maybe you want also the entire address
// 2025-07-19: method is always uses $useEntireAddress=false, nobody uses this.
// if ($useEntireAddress && $addressLine = $this->generateAddressLine($relatedParty->getRelatedPartyType()->getAddress())) {
// $opposingName .= sprintf(', %s', $addressLine);
// }
// if ($useEntireAddress && $addressLine = $this->generateAddressLine($relatedParty->getRelatedPartyType()->getAddress())) {
// $opposingName .= sprintf(', %s', $addressLine);
// }
}
return $opposingName;

2
app/Services/Nordigen/Conversion/RoutineManager.php

@ -229,7 +229,7 @@ class RoutineManager implements RoutineManagerInterface
private function findAccountInfo(array $accounts, int $accountId): ?array
{
return array_find($accounts, fn($account) => $account['id'] === $accountId);
return array_find($accounts, fn ($account) => $account['id'] === $accountId);
}

4
app/Services/Nordigen/Request/GetAccountBalanceRequest.php

@ -1,4 +1,6 @@
<?php /** @noinspection PhpInconsistentReturnPointsInspection */
<?php
/** @noinspection PhpInconsistentReturnPointsInspection */
/*
* GetAccountBalanceRequest.php

1
app/Services/Nordigen/Request/ListAccountsRequest.php

@ -37,7 +37,6 @@ use App\Services\Shared\Response\Response;
*/
class ListAccountsRequest extends Request
{
public function __construct(string $url, string $identifier, string $token)
{
$this->setParameters([]);

4
app/Services/SimpleFIN/Conversion/AccountMapper.php

@ -305,7 +305,7 @@ class AccountMapper
{
$this->loadFireflyAccounts();
return array_find($this->fireflyAccounts, fn($account) => $account->id === $id);
return array_find($this->fireflyAccounts, fn ($account) => $account->id === $id);
}
@ -414,7 +414,7 @@ class AccountMapper
'Temporary failure in name resolution',
];
return array_any($retryableErrors, fn($retryableError) => false !== stripos($errorMessage, $retryableError));
return array_any($retryableErrors, fn ($retryableError) => false !== stripos($errorMessage, $retryableError));
}

4
app/Services/Spectre/Response/PutRefreshConnectionResponse.php

@ -32,7 +32,5 @@ use App\Services\Shared\Response\Response;
*/
class PutRefreshConnectionResponse extends Response
{
public function __construct(array $data)
{
}
public function __construct(array $data) {}
}

6
changelog.md

@ -7,9 +7,9 @@ This project adheres to [Semantic Versioning](http://semver.org/).
> ⚠️ Some changes in this release may unexpectedly lead to duplicate transactions. This is caused by changes in the data handling routines. This is unfortunate, but a result of new insights, changed APIs and other minor fixes. My apologies for any inconvenience. I try to avoid these kinds of changes, but it can't always be helped.
### Fixed
- #10602
- #10599
- #10609
- [Issue 10602](https://github.com/firefly-iii/firefly-iii/issues/10602) ([Importer] SimpleFIN import does not respect datetime) reported by @wyomatthew
- [Discussion 10599](https://github.com/orgs/firefly-iii/discussions/10599) (Issue with simpleFIN importing) started by @DrEthan77
- [Issue 10609](https://github.com/firefly-iii/firefly-iii/issues/10609) (GoCardless imports with exchange rate 0 should not add note to transaction) reported by @TomVarga
- [PR 901](https://github.com/firefly-iii/data-importer/pull/901) by @TomVarga for issue 10609
- [PR 905](https://github.com/firefly-iii/data-importer/pull/905) by @DrEthan77 (This PR fixes issue 10599)

4
config/importer.php

@ -24,8 +24,8 @@
declare(strict_types=1);
return [
'version' => 'develop/2025-07-19',
'build_time' => 1752897412,
'version' => 'develop/2025-07-20',
'build_time' => 1753008967,
'flows' => ['nordigen', 'spectre', 'file', 'simplefin'],
'enabled_flows' => [
'nordigen' => true,

214
package-lock.json

@ -12,9 +12,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.7.tgz",
"integrity": "sha512-uD0kKFHh6ETr8TqEtaAcV+dn/2qnYbH/+8wGEdY70Qf7l1l/jmBUbrmQqwiPKAQE6cOQ7dTj6Xr0HzQDGHyceQ==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz",
"integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==",
"cpu": [
"ppc64"
],
@ -29,9 +29,9 @@
}
},
"node_modules/@esbuild/android-arm": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.7.tgz",
"integrity": "sha512-Jhuet0g1k9rAJHrXGIh7sFknFuT4sfytYZpZpuZl7YKDhnPByVAm5oy2LEBmMbuYf3ejWVYCc2seX81Mk+madA==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz",
"integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==",
"cpu": [
"arm"
],
@ -46,9 +46,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.7.tgz",
"integrity": "sha512-p0ohDnwyIbAtztHTNUTzN5EGD/HJLs1bwysrOPgSdlIA6NDnReoVfoCyxG6W1d85jr2X80Uq5KHftyYgaK9LPQ==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz",
"integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==",
"cpu": [
"arm64"
],
@ -63,9 +63,9 @@
}
},
"node_modules/@esbuild/android-x64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.7.tgz",
"integrity": "sha512-mMxIJFlSgVK23HSsII3ZX9T2xKrBCDGyk0qiZnIW10LLFFtZLkFD6imZHu7gUo2wkNZwS9Yj3mOtZD3ZPcjCcw==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz",
"integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==",
"cpu": [
"x64"
],
@ -80,9 +80,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.7.tgz",
"integrity": "sha512-jyOFLGP2WwRwxM8F1VpP6gcdIJc8jq2CUrURbbTouJoRO7XCkU8GdnTDFIHdcifVBT45cJlOYsZ1kSlfbKjYUQ==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz",
"integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==",
"cpu": [
"arm64"
],
@ -97,9 +97,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.7.tgz",
"integrity": "sha512-m9bVWqZCwQ1BthruifvG64hG03zzz9gE2r/vYAhztBna1/+qXiHyP9WgnyZqHgGeXoimJPhAmxfbeU+nMng6ZA==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz",
"integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==",
"cpu": [
"x64"
],
@ -114,9 +114,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.7.tgz",
"integrity": "sha512-Bss7P4r6uhr3kDzRjPNEnTm/oIBdTPRNQuwaEFWT/uvt6A1YzK/yn5kcx5ZxZ9swOga7LqeYlu7bDIpDoS01bA==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz",
"integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==",
"cpu": [
"arm64"
],
@ -131,9 +131,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.7.tgz",
"integrity": "sha512-S3BFyjW81LXG7Vqmr37ddbThrm3A84yE7ey/ERBlK9dIiaWgrjRlre3pbG7txh1Uaxz8N7wGGQXmC9zV+LIpBQ==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz",
"integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==",
"cpu": [
"x64"
],
@ -148,9 +148,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.7.tgz",
"integrity": "sha512-JZMIci/1m5vfQuhKoFXogCKVYVfYQmoZJg8vSIMR4TUXbF+0aNlfXH3DGFEFMElT8hOTUF5hisdZhnrZO/bkDw==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz",
"integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==",
"cpu": [
"arm"
],
@ -165,9 +165,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.7.tgz",
"integrity": "sha512-HfQZQqrNOfS1Okn7PcsGUqHymL1cWGBslf78dGvtrj8q7cN3FkapFgNA4l/a5lXDwr7BqP2BSO6mz9UremNPbg==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz",
"integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==",
"cpu": [
"arm64"
],
@ -182,9 +182,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.7.tgz",
"integrity": "sha512-9Jex4uVpdeofiDxnwHRgen+j6398JlX4/6SCbbEFEXN7oMO2p0ueLN+e+9DdsdPLUdqns607HmzEFnxwr7+5wQ==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz",
"integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==",
"cpu": [
"ia32"
],
@ -199,9 +199,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.7.tgz",
"integrity": "sha512-TG1KJqjBlN9IHQjKVUYDB0/mUGgokfhhatlay8aZ/MSORMubEvj/J1CL8YGY4EBcln4z7rKFbsH+HeAv0d471w==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz",
"integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==",
"cpu": [
"loong64"
],
@ -216,9 +216,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.7.tgz",
"integrity": "sha512-Ty9Hj/lx7ikTnhOfaP7ipEm/ICcBv94i/6/WDg0OZ3BPBHhChsUbQancoWYSO0WNkEiSW5Do4febTTy4x1qYQQ==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz",
"integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==",
"cpu": [
"mips64el"
],
@ -233,9 +233,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.7.tgz",
"integrity": "sha512-MrOjirGQWGReJl3BNQ58BLhUBPpWABnKrnq8Q/vZWWwAB1wuLXOIxS2JQ1LT3+5T+3jfPh0tyf5CpbyQHqnWIQ==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz",
"integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==",
"cpu": [
"ppc64"
],
@ -250,9 +250,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.7.tgz",
"integrity": "sha512-9pr23/pqzyqIZEZmQXnFyqp3vpa+KBk5TotfkzGMqpw089PGm0AIowkUppHB9derQzqniGn3wVXgck19+oqiOw==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz",
"integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==",
"cpu": [
"riscv64"
],
@ -267,9 +267,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.7.tgz",
"integrity": "sha512-4dP11UVGh9O6Y47m8YvW8eoA3r8qL2toVZUbBKyGta8j6zdw1cn9F/Rt59/Mhv0OgY68pHIMjGXWOUaykCnx+w==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz",
"integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==",
"cpu": [
"s390x"
],
@ -284,9 +284,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.7.tgz",
"integrity": "sha512-ghJMAJTdw/0uhz7e7YnpdX1xVn7VqA0GrWrAO2qKMuqbvgHT2VZiBv1BQ//VcHsPir4wsL3P2oPggfKPzTKoCA==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz",
"integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==",
"cpu": [
"x64"
],
@ -301,9 +301,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.7.tgz",
"integrity": "sha512-bwXGEU4ua45+u5Ci/a55B85KWaDSRS8NPOHtxy2e3etDjbz23wlry37Ffzapz69JAGGc4089TBo+dGzydQmydg==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz",
"integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==",
"cpu": [
"arm64"
],
@ -318,9 +318,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.7.tgz",
"integrity": "sha512-tUZRvLtgLE5OyN46sPSYlgmHoBS5bx2URSrgZdW1L1teWPYVmXh+QN/sKDqkzBo/IHGcKcHLKDhBeVVkO7teEA==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz",
"integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==",
"cpu": [
"x64"
],
@ -335,9 +335,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.7.tgz",
"integrity": "sha512-bTJ50aoC+WDlDGBReWYiObpYvQfMjBNlKztqoNUL0iUkYtwLkBQQeEsTq/I1KyjsKA5tyov6VZaPb8UdD6ci6Q==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz",
"integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==",
"cpu": [
"arm64"
],
@ -352,9 +352,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.7.tgz",
"integrity": "sha512-TA9XfJrgzAipFUU895jd9j2SyDh9bbNkK2I0gHcvqb/o84UeQkBpi/XmYX3cO1q/9hZokdcDqQxIi6uLVrikxg==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz",
"integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==",
"cpu": [
"x64"
],
@ -369,9 +369,9 @@
}
},
"node_modules/@esbuild/openharmony-arm64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.7.tgz",
"integrity": "sha512-5VTtExUrWwHHEUZ/N+rPlHDwVFQ5aME7vRJES8+iQ0xC/bMYckfJ0l2n3yGIfRoXcK/wq4oXSItZAz5wslTKGw==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz",
"integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==",
"cpu": [
"arm64"
],
@ -386,9 +386,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.7.tgz",
"integrity": "sha512-umkbn7KTxsexhv2vuuJmj9kggd4AEtL32KodkJgfhNOHMPtQ55RexsaSrMb+0+jp9XL4I4o2y91PZauVN4cH3A==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz",
"integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==",
"cpu": [
"x64"
],
@ -403,9 +403,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.7.tgz",
"integrity": "sha512-j20JQGP/gz8QDgzl5No5Gr4F6hurAZvtkFxAKhiv2X49yi/ih8ECK4Y35YnjlMogSKJk931iNMcd35BtZ4ghfw==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz",
"integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==",
"cpu": [
"arm64"
],
@ -420,9 +420,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.7.tgz",
"integrity": "sha512-4qZ6NUfoiiKZfLAXRsvFkA0hoWVM+1y2bSHXHkpdLAs/+r0LgwqYohmfZCi985c6JWHhiXP30mgZawn/XrqAkQ==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz",
"integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==",
"cpu": [
"ia32"
],
@ -437,9 +437,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.7.tgz",
"integrity": "sha512-FaPsAHTwm+1Gfvn37Eg3E5HIpfR3i6x1AIcla/MkqAIupD4BW3MrSeUqfoTzwwJhk3WE2/KqUn4/eenEJC76VA==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz",
"integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==",
"cpu": [
"x64"
],
@ -1277,9 +1277,9 @@
}
},
"node_modules/esbuild": {
"version": "0.25.7",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.7.tgz",
"integrity": "sha512-daJB0q2dmTzo90L9NjRaohhRWrCzYxWNFTjEi72/h+p5DcY3yn4MacWfDakHmaBaDzDiuLJsCh0+6LK/iX+c+Q==",
"version": "0.25.8",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz",
"integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@ -1290,32 +1290,32 @@
"node": ">=18"
},
"optionalDependencies": {
"@esbuild/aix-ppc64": "0.25.7",
"@esbuild/android-arm": "0.25.7",
"@esbuild/android-arm64": "0.25.7",
"@esbuild/android-x64": "0.25.7",
"@esbuild/darwin-arm64": "0.25.7",
"@esbuild/darwin-x64": "0.25.7",
"@esbuild/freebsd-arm64": "0.25.7",
"@esbuild/freebsd-x64": "0.25.7",
"@esbuild/linux-arm": "0.25.7",
"@esbuild/linux-arm64": "0.25.7",
"@esbuild/linux-ia32": "0.25.7",
"@esbuild/linux-loong64": "0.25.7",
"@esbuild/linux-mips64el": "0.25.7",
"@esbuild/linux-ppc64": "0.25.7",
"@esbuild/linux-riscv64": "0.25.7",
"@esbuild/linux-s390x": "0.25.7",
"@esbuild/linux-x64": "0.25.7",
"@esbuild/netbsd-arm64": "0.25.7",
"@esbuild/netbsd-x64": "0.25.7",
"@esbuild/openbsd-arm64": "0.25.7",
"@esbuild/openbsd-x64": "0.25.7",
"@esbuild/openharmony-arm64": "0.25.7",
"@esbuild/sunos-x64": "0.25.7",
"@esbuild/win32-arm64": "0.25.7",
"@esbuild/win32-ia32": "0.25.7",
"@esbuild/win32-x64": "0.25.7"
"@esbuild/aix-ppc64": "0.25.8",
"@esbuild/android-arm": "0.25.8",
"@esbuild/android-arm64": "0.25.8",
"@esbuild/android-x64": "0.25.8",
"@esbuild/darwin-arm64": "0.25.8",
"@esbuild/darwin-x64": "0.25.8",
"@esbuild/freebsd-arm64": "0.25.8",
"@esbuild/freebsd-x64": "0.25.8",
"@esbuild/linux-arm": "0.25.8",
"@esbuild/linux-arm64": "0.25.8",
"@esbuild/linux-ia32": "0.25.8",
"@esbuild/linux-loong64": "0.25.8",
"@esbuild/linux-mips64el": "0.25.8",
"@esbuild/linux-ppc64": "0.25.8",
"@esbuild/linux-riscv64": "0.25.8",
"@esbuild/linux-s390x": "0.25.8",
"@esbuild/linux-x64": "0.25.8",
"@esbuild/netbsd-arm64": "0.25.8",
"@esbuild/netbsd-x64": "0.25.8",
"@esbuild/openbsd-arm64": "0.25.8",
"@esbuild/openbsd-x64": "0.25.8",
"@esbuild/openharmony-arm64": "0.25.8",
"@esbuild/sunos-x64": "0.25.8",
"@esbuild/win32-arm64": "0.25.8",
"@esbuild/win32-ia32": "0.25.8",
"@esbuild/win32-x64": "0.25.8"
}
},
"node_modules/fill-range": {

Loading…
Cancel
Save