diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml
index dd850c742042..04bb33545951 100644
--- a/.github/workflows/phpunit.yml
+++ b/.github/workflows/phpunit.yml
@@ -13,8 +13,8 @@ jobs:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
- operating-system: ['ubuntu-20.04', 'ubuntu-22.04']
- php-versions: ['8.1','8.2']
+ operating-system: ['ubuntu-22.04','ubuntu-24.04']
+ php-versions: ['8.2']
phpunit-versions: ['latest']
ci_node_total: [ 8 ]
ci_node_index: [ 0, 1, 2, 3, 4, 5, 6, 7]
@@ -95,14 +95,15 @@ jobs:
- name: Get Composer Cache Directory
id: composer-cache
run: |
- echo "::set-output name=dir::$(composer config cache-files-dir)"
- - uses: actions/cache@v3
+ echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
+ - uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-${{ matrix.php }}-composer-
+
- name: Install composer dependencies
run: |
composer config -g github-oauth.github.com ${{ secrets.GITHUB_TOKEN }}
diff --git a/VERSION.txt b/VERSION.txt
index 5a2fcfc24009..01959b109939 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1 +1 @@
-5.8.57
+5.8.57
\ No newline at end of file
diff --git a/app/Console/Commands/EDocLint.php b/app/Console/Commands/EDocLint.php
deleted file mode 100644
index 8604dd2edaa8..000000000000
--- a/app/Console/Commands/EDocLint.php
+++ /dev/null
@@ -1,69 +0,0 @@
-classes as $class)
- {
-
- $provider = new $class();
-
- foreach($provider as $key => $value) {
-
- $json = json_encode($provider->{$key}, JSON_PRETTY_PRINT);
- Storage::disk('local')->put($key.'.json', $json);
-
- }
-
- }
-
- }
-}
diff --git a/app/DataProviders/FACT1.php b/app/DataProviders/FACT1.php
new file mode 100644
index 000000000000..3572e15253bb
--- /dev/null
+++ b/app/DataProviders/FACT1.php
@@ -0,0 +1,24 @@
+ "Regime ordinario",
- "RF02" => "Regime dei contribuenti minimi (art. 1,c.96-117, L. 244/2007)",
- "RF04" => "Agricoltura e attività connesse e pesca (artt. 34 e 34-bis, D.P.R. 633/1972)",
- "RF05" => "Vendita sali e tabacchi (art. 74, c.1, D.P.R. 633/1972)",
- "RF06" => "Commercio dei fiammiferi (art. 74, c.1, D.P.R. 633/1972)",
- "RF07" => "Editoria (art. 74, c.1, D.P.R. 633/1972)",
- "RF08" => "Gestione di servizi di telefonia pubblica (art. 74, c.1, D.P.R. 633/1972)" ,
- "RF09" => "Rivendita di documenti di trasporto pubblico e di sosta (art. 74, c.1, D.P.R. 633/1972)" ,
- "RF10" => "Intrattenimenti, giochi e altre attività di cui alla tariffa allegata al D.P.R. 640/72 (art. 74, c.6, D.P.R. 633/1972)" ,
- "RF11" => "Agenzie di viaggi e turismo (art. 74-ter, D.P.R. 633/1972)" ,
- "RF12" => "Agriturismo (art. 5, c.2, L. 413/1991)" ,
- "RF13" => "Vendite a domicilio (art. 25-bis, c.6, D.P.R. 600/1973)" ,
- "RF14" => "Rivendita di beni usati, di oggetti d’arte, d’antiquariato o da collezione (art. 36, D.L. 41/1995)" ,
- "RF15" => "Agenzie di vendite all’asta di oggetti d’arte, antiquariato o da collezione (art. 40-bis, D.L. 41/1995)" ,
- "RF16" => "IVA per cassa P.A. (art. 6, c.5, D.P.R. 633/1972)" ,
- "RF17" => "IVA per cassa (art. 32-bis, D.L. 83/2012)" ,
- "RF19" => "Regime forfettario" ,
- "RF18" => "Altro"
- ];
-
- public array $tipo_documento = [
- 'TD01' => 'Fattura',
- 'TD02' => 'Acconto/Anticipo su fattura',
- 'TD03' => 'Acconto/Anticipo su parcella',
- 'TD04' => 'Nota di Credito',
- 'TD05' => 'Nota di Debito',
- 'TD06' => 'Parcella',
- 'TD16' => 'Integrazione fattura reverse charge interno',
- 'TD17' => 'Integrazione/autofattura per acquisto servizi dall’estero',
- 'TD18' => 'Integrazione per acquisto di beni intracomunitari',
- 'TD19' => 'Integrazione/autofattura per acquisto di beni ex art.17 c.2 DPR 633/72',
- 'TD20' => 'Autofattura per regolarizzazione e integrazione delle fatture',
- 'TD21' => 'Autofattura per splafonamento',
- 'TD22' => 'Estrazione beni da Deposito IVA',
- 'TD23' => 'Estrazione beni da Deposito IVA con versamento dell’IVA',
- 'TD24' => 'Fattura differita di cui all’art.21, comma 4, lett. a)',
- 'TD25' => 'Fattura differita di cui all’art.21, comma 4, terzo periodo lett. b)',
- 'TD26' => 'Cessione di beni ammortizzabili e per passaggi interni ',
- 'TD27' => 'Fattura per autoconsumo o per cessioni gratuite senza rivalsa',
- ];
-
- public array $esigibilita_iva = [
- 'I' => 'IVA ad esigibilità immediata',
- 'D' => 'IVA ad esigibilità differita',
- 'S' => 'Scissione dei pagamenti',
- ];
-
- public array $modalita_pagamento = [
- 'MP01' => 'contanti', //cash
- 'MP02' => 'assegno', //check
- 'MP03' => 'assegno circolare', //cashier's check
- 'MP04' => 'contanti presso Tesoreria', //cash at treasury
- 'MP05' => 'bonifico', //bank transfer
- 'MP06' => 'vaglia cambiario', //bill of exchange
- 'MP07' => 'bollettino bancario', //bank bulletin
- 'MP08' => 'carta di pagamento', //payment card
- 'MP09' => 'RID', //RID
- 'MP10' => 'RID utenze', //RID utilities
- 'MP11' => 'RID veloce', //fast RID
- 'MP12' => 'Riba', //Riba
- 'MP13' => 'MAV //MAV',
- 'MP14' => 'quietanza erario stato', //state treasury receipt
- 'MP15' => 'giroconto su conti di contabilità speciale', //transfer to special accounting accounts
- 'MP16' => 'domiciliazione bancaria', //bank domiciliation
- 'MP17' => 'domiciliazione postale', //postal domiciliation
- 'MP18' => 'bollettino di c/c postale', //postal giro account
- 'MP19' => 'SEPA Direct Debit', //SEPA Direct Debit
- 'MP20' => 'SEPA Direct Debit CORE', //SEPA Direct Debit CORE
- 'MP21' => 'SEPA Direct Debit B2B', //SEPA Direct Debit B2B
- 'MP22' => 'Trattenuta su somme già riscosse', //Withholding on sums already collected
- 'MP23' => 'PagoPA', //PagoPA
- ];
-
- public array $esigibilita_pagamento = [
- 'TP01' => 'Pagamento a rate',
- 'TP02' => 'Pagamento completo',
- 'TP03' => 'Anticipo',
- ];
-
- public function __construct()
- {
- }
-
- public function getRegimeFiscale(): array
- {
- return $this->regime_fiscale;
- }
- public function getTipoDocumento(): array
- {
- return $this->tipo_documento;
- }
-
- public function getEsigibilitaIva(): array
- {
- return $this->esigibilita_iva;
- }
-
- public function getModalitaPagamento(): array
- {
- return $this->modalita_pagamento;
- }
-
- public function getEsigibilitaPagamento(): array
- {
- return $this->esigibilita_pagamento;
- }
-
-}
\ No newline at end of file
diff --git a/app/Export/CSV/ClientExport.php b/app/Export/CSV/ClientExport.php
index 736b2285c098..de3ee42c0650 100644
--- a/app/Export/CSV/ClientExport.php
+++ b/app/Export/CSV/ClientExport.php
@@ -125,8 +125,10 @@ class ClientExport extends BaseExport
$query = Client::query()->with('contacts')
->withTrashed()
- ->where('company_id', $this->company->id)
- ->where('is_deleted', $this->input['include_deleted'] ?? false);
+ ->where('company_id', $this->company->id);
+
+ if(!$this->input['include_deleted'] ?? false)
+ $query->where('is_deleted', 0);
$query = $this->addDateRange($query);
diff --git a/app/Export/CSV/ExpenseExport.php b/app/Export/CSV/ExpenseExport.php
index fe1db16d1b2b..67ba75c1695e 100644
--- a/app/Export/CSV/ExpenseExport.php
+++ b/app/Export/CSV/ExpenseExport.php
@@ -82,8 +82,12 @@ class ExpenseExport extends BaseExport
$query = Expense::query()
->with('client')
->withTrashed()
- ->where('company_id', $this->company->id)
- ->where('is_deleted', $this->input['include_deleted'] ?? false);
+ ->where('company_id', $this->company->id);
+
+
+ if(!$this->input['include_deleted'] ?? false){
+ $query->where('is_deleted', 0);
+ }
$query = $this->addDateRange($query);
diff --git a/app/Export/CSV/InvoiceExport.php b/app/Export/CSV/InvoiceExport.php
index 5d9fd4442253..b0435e3859fd 100644
--- a/app/Export/CSV/InvoiceExport.php
+++ b/app/Export/CSV/InvoiceExport.php
@@ -60,8 +60,12 @@ class InvoiceExport extends BaseExport
->whereHas('client', function ($q){
$q->where('is_deleted', false);
})
- ->where('company_id', $this->company->id)
- ->where('is_deleted', $this->input['include_deleted'] ?? false);
+ ->where('company_id', $this->company->id);
+
+
+ if(!$this->input['include_deleted'] ?? false){
+ $query->where('is_deleted', 0);
+ }
$query = $this->addDateRange($query);
diff --git a/app/Export/CSV/InvoiceItemExport.php b/app/Export/CSV/InvoiceItemExport.php
index fcc0470400da..20308854f2ac 100644
--- a/app/Export/CSV/InvoiceItemExport.php
+++ b/app/Export/CSV/InvoiceItemExport.php
@@ -73,8 +73,11 @@ class InvoiceItemExport extends BaseExport
->whereHas('client', function ($q){
$q->where('is_deleted', false);
})
- ->where('company_id', $this->company->id)
- ->where('is_deleted', $this->input['include_deleted'] ?? false);
+ ->where('company_id', $this->company->id);
+
+ if(!$this->input['include_deleted'] ?? false){
+ $query->where('is_deleted', 0);
+ }
$query = $this->addDateRange($query);
diff --git a/app/Export/CSV/ProductExport.php b/app/Export/CSV/ProductExport.php
index b1ef871c2522..cd874d16eb92 100644
--- a/app/Export/CSV/ProductExport.php
+++ b/app/Export/CSV/ProductExport.php
@@ -73,8 +73,12 @@ class ProductExport extends BaseExport
$query = Product::query()
->withTrashed()
- ->where('company_id', $this->company->id)
- ->where('is_deleted', 0);
+ ->where('company_id', $this->company->id);
+
+
+ if(!$this->input['include_deleted'] ?? false){
+ $query->where('is_deleted', 0);
+ }
$query = $this->addDateRange($query);
diff --git a/app/Export/CSV/PurchaseOrderExport.php b/app/Export/CSV/PurchaseOrderExport.php
index ff092f3fbd3e..cbe54e51b2c9 100644
--- a/app/Export/CSV/PurchaseOrderExport.php
+++ b/app/Export/CSV/PurchaseOrderExport.php
@@ -61,8 +61,11 @@ class PurchaseOrderExport extends BaseExport
->whereHas('vendor', function ($q){
$q->where('is_deleted', false);
})
- ->where('company_id', $this->company->id)
- ->where('is_deleted', $this->input['include_deleted'] ?? false);
+ ->where('company_id', $this->company->id);
+
+ if(!$this->input['include_deleted'] ?? false){
+ $query->where('is_deleted', 0);
+ }
$query = $this->addDateRange($query);
diff --git a/app/Export/CSV/PurchaseOrderItemExport.php b/app/Export/CSV/PurchaseOrderItemExport.php
index d7839448bcec..96c4c03aff28 100644
--- a/app/Export/CSV/PurchaseOrderItemExport.php
+++ b/app/Export/CSV/PurchaseOrderItemExport.php
@@ -65,8 +65,11 @@ class PurchaseOrderItemExport extends BaseExport
->whereHas('vendor', function ($q){
$q->where('is_deleted', false);
})
- ->with('vendor')->where('company_id', $this->company->id)
- ->where('is_deleted', $this->input['include_deleted'] ?? false);
+ ->with('vendor')->where('company_id', $this->company->id);
+
+ if(!$this->input['include_deleted'] ?? false){
+ $query->where('is_deleted', 0);
+ }
$query = $this->addDateRange($query);
diff --git a/app/Export/CSV/QuoteExport.php b/app/Export/CSV/QuoteExport.php
index ceaafeffce6f..13c53cb0dc3a 100644
--- a/app/Export/CSV/QuoteExport.php
+++ b/app/Export/CSV/QuoteExport.php
@@ -67,8 +67,11 @@ class QuoteExport extends BaseExport
->whereHas('client', function ($q){
$q->where('is_deleted', false);
})
- ->where('company_id', $this->company->id)
- ->where('is_deleted', $this->input['include_deleted'] ?? false);
+ ->where('company_id', $this->company->id);
+
+ if(!$this->input['include_deleted'] ?? false){
+ $query->where('is_deleted', 0);
+ }
$query = $this->addDateRange($query);
diff --git a/app/Export/CSV/QuoteItemExport.php b/app/Export/CSV/QuoteItemExport.php
index d3c004c1c201..d3f8be4b91f8 100644
--- a/app/Export/CSV/QuoteItemExport.php
+++ b/app/Export/CSV/QuoteItemExport.php
@@ -68,8 +68,11 @@ class QuoteItemExport extends BaseExport
->whereHas('client', function ($q){
$q->where('is_deleted', false);
})
- ->with('client')->where('company_id', $this->company->id)
- ->where('is_deleted', $this->input['include_deleted'] ?? false);
+ ->with('client')->where('company_id', $this->company->id);
+
+ if(!$this->input['include_deleted'] ?? false){
+ $query->where('is_deleted', 0);
+ }
$query = $this->addDateRange($query);
diff --git a/app/Export/CSV/RecurringInvoiceExport.php b/app/Export/CSV/RecurringInvoiceExport.php
index df80d2d2a92b..9c88f33f7ab9 100644
--- a/app/Export/CSV/RecurringInvoiceExport.php
+++ b/app/Export/CSV/RecurringInvoiceExport.php
@@ -59,8 +59,11 @@ class RecurringInvoiceExport extends BaseExport
->whereHas('client', function ($q){
$q->where('is_deleted', false);
})
- ->where('company_id', $this->company->id)
- ->where('is_deleted', $this->input['include_deleted'] ?? false);
+ ->where('company_id', $this->company->id);
+
+ if(!$this->input['include_deleted'] ?? false){
+ $query->where('is_deleted', 0);
+ }
$query = $this->addDateRange($query);
diff --git a/app/Export/CSV/TaskExport.php b/app/Export/CSV/TaskExport.php
index 7830114f260a..5b1985ce4782 100644
--- a/app/Export/CSV/TaskExport.php
+++ b/app/Export/CSV/TaskExport.php
@@ -68,8 +68,11 @@ class TaskExport extends BaseExport
$query = Task::query()
->withTrashed()
- ->where('company_id', $this->company->id)
- ->where('is_deleted', $this->input['include_deleted'] ?? false);
+ ->where('company_id', $this->company->id);
+
+ if(!$this->input['include_deleted'] ?? false){
+ $query->where('is_deleted', 0);
+ }
$query = $this->addDateRange($query);
diff --git a/app/Export/CSV/VendorExport.php b/app/Export/CSV/VendorExport.php
index 5037e4d43b7f..187487a14765 100644
--- a/app/Export/CSV/VendorExport.php
+++ b/app/Export/CSV/VendorExport.php
@@ -62,8 +62,11 @@ class VendorExport extends BaseExport
$query = Vendor::query()->with('contacts')
->withTrashed()
- ->where('company_id', $this->company->id)
- ->where('is_deleted', $this->input['include_deleted'] ?? false);
+ ->where('company_id', $this->company->id);
+
+ if(!$this->input['include_deleted'] ?? false){
+ $query->where('is_deleted', 0);
+ }
$query = $this->addDateRange($query);
diff --git a/app/Factory/UserFactory.php b/app/Factory/UserFactory.php
index 960584cceead..e0c46bbcda2a 100644
--- a/app/Factory/UserFactory.php
+++ b/app/Factory/UserFactory.php
@@ -12,6 +12,7 @@
namespace App\Factory;
use App\Models\User;
+use Illuminate\Support\Str;
class UserFactory
{
@@ -29,6 +30,7 @@ class UserFactory
$user->signature = '';
$user->theme_id = 0;
$user->user_logged_in_notification = true;
+ $user->referral_code = Str::lower(Str::random(32));
return $user;
}
diff --git a/app/Helpers/Mail/GmailTransport.php b/app/Helpers/Mail/GmailTransport.php
index e13c6f07923c..0655c710cad8 100644
--- a/app/Helpers/Mail/GmailTransport.php
+++ b/app/Helpers/Mail/GmailTransport.php
@@ -64,23 +64,23 @@ class GmailTransport extends AbstractTransport
$body->setRaw($this->base64_encode($bcc_list.$message->toString()));
- try {
+ // try {
$service->users_messages->send('me', $body, []);
- } catch(\Google\Service\Exception $e) {
- /* Need to slow down */
- if ($e->getCode() == '429') {
- nlog("429 google - retrying ");
+ // } catch(\Google\Service\Exception $e) {
+ // /* Need to slow down */
+ // if ($e->getCode() == '429') {
+ // nlog("429 google - retrying ");
- sleep(rand(3,8));
+ // sleep(rand(3,8));
- try {
- $service->users_messages->send('me', $body, []);
- } catch(\Google\Service\Exception $e) {
+ // try {
+ // $service->users_messages->send('me', $body, []);
+ // } catch(\Google\Service\Exception $e) {
- }
+ // }
- }
- }
+ // }
+ // }
}
private function base64_encode($data)
diff --git a/app/Http/Controllers/Bank/NordigenController.php b/app/Http/Controllers/Bank/NordigenController.php
index ebefc7b5bd8f..5e6764ecb006 100644
--- a/app/Http/Controllers/Bank/NordigenController.php
+++ b/app/Http/Controllers/Bank/NordigenController.php
@@ -35,7 +35,7 @@ class NordigenController extends BaseController
/** @var array $context */
$context = $request->getTokenContent();
$company = $request->getCompany();
- $lang = $company->locale();
+ $lang = substr($company->locale(), 0, 2);
$context["lang"] = $lang;
if (!$context) {
@@ -143,7 +143,7 @@ class NordigenController extends BaseController
$data = $request->all();
$company = $request->getCompany();
$account = $company->account;
- $lang = $company->locale();
+ $lang = substr($company->locale(), 0, 2);
/** @var array $context */
$context = $request->getTokenContent();
diff --git a/app/Http/Controllers/BaseController.php b/app/Http/Controllers/BaseController.php
index 8e2c8de91f25..f573fa72e00f 100644
--- a/app/Http/Controllers/BaseController.php
+++ b/app/Http/Controllers/BaseController.php
@@ -38,6 +38,7 @@ use App\Transformers\ArraySerializer;
use App\Transformers\EntityTransformer;
use League\Fractal\Resource\Collection;
use Illuminate\Database\Eloquent\Builder;
+use Invoiceninja\Einvoice\Decoder\Schema;
use League\Fractal\Serializer\JsonApiSerializer;
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
use Illuminate\Contracts\Container\BindingResolutionException;
@@ -996,8 +997,8 @@ class BaseController extends Controller
if(request()->has('einvoice')){
- // $ro = new Schema();
- // $response_data['einvoice_schema'] = $ro('FACT1');
+ $ro = new Schema();
+ $response_data['einvoice_schema'] = $ro('FACT1');
}
diff --git a/app/Http/Controllers/PreviewController.php b/app/Http/Controllers/PreviewController.php
index 08537427a5d5..a23465d688d1 100644
--- a/app/Http/Controllers/PreviewController.php
+++ b/app/Http/Controllers/PreviewController.php
@@ -29,6 +29,7 @@ use App\Utils\HostedPDF\NinjaPdf;
use App\Utils\HtmlEngine;
use App\Utils\Ninja;
use App\Utils\PhantomJS\Phantom;
+use App\Utils\Traits\GeneratesCounter;
use App\Utils\Traits\MakesHash;
use App\Utils\Traits\MakesInvoiceHtml;
use App\Utils\Traits\Pdf\PageNumbering;
@@ -40,6 +41,7 @@ use Twig\Error\SyntaxError;
class PreviewController extends BaseController
{
+ use GeneratesCounter;
use MakesHash;
use MakesInvoiceHtml;
use PageNumbering;
@@ -404,23 +406,24 @@ class PreviewController extends BaseController
/** @var \App\Models\Client $client */
$client = Client::factory()->create([
- 'user_id' => auth()->user()->id,
+ 'user_id' => $user->id,
'company_id' => $company->id,
]);
/** @var \App\Models\ClientContact $contact */
$contact = ClientContact::factory()->create([
- 'user_id' => auth()->user()->id,
+ 'user_id' => $user->id,
'company_id' => $company->id,
'client_id' => $client->id,
'is_primary' => 1,
'send_email' => true,
]);
- /** @var \App\Models\Invoice $invoice */
+ $settings = $company->settings;
+ /** @var \App\Models\Invoice $invoice */
$invoice = Invoice::factory()->create([
- 'user_id' => auth()->user()->id,
+ 'user_id' => $user->id,
'company_id' => $company->id,
'client_id' => $client->id,
'terms' => $company->settings->invoice_terms,
@@ -428,8 +431,18 @@ class PreviewController extends BaseController
'public_notes' => 'Sample Public Notes',
]);
+ if ($settings->invoice_number_pattern) {
+ $invoice->number = $this->getFormattedEntityNumber(
+ $invoice,
+ rand(1, 9999),
+ $settings->counter_padding ?: 4,
+ $settings->invoice_number_pattern,
+ );
+ $invoice->save();
+ }
+
$invitation = InvoiceInvitation::factory()->create([
- 'user_id' => auth()->user()->id,
+ 'user_id' => $user->id,
'company_id' => $company->id,
'invoice_id' => $invoice->id,
'client_contact_id' => $contact->id,
@@ -454,7 +467,7 @@ class PreviewController extends BaseController
'template' => $design->elements([
'client' => $invoice->client,
'entity' => $invoice,
- 'pdf_variables' => (array) $invoice->company->settings->pdf_variables,
+ 'pdf_variables' => (array) $settings->pdf_variables,
'products' => request()->design['design']['product'],
]),
'variables' => $html->generateLabelsAndValues(),
diff --git a/app/Http/Controllers/SelfUpdateController.php b/app/Http/Controllers/SelfUpdateController.php
index 4af43a2a1224..de5808b0f120 100644
--- a/app/Http/Controllers/SelfUpdateController.php
+++ b/app/Http/Controllers/SelfUpdateController.php
@@ -26,8 +26,6 @@ class SelfUpdateController extends BaseController
use ClientGroupSettingsSaver;
use AppSetup;
- // private bool $use_zip = false;
-
private string $filename = 'invoiceninja.tar';
private array $purge_file_list = [
diff --git a/app/Http/Controllers/StaticController.php b/app/Http/Controllers/StaticController.php
index 135384fb9697..71403d055d1b 100644
--- a/app/Http/Controllers/StaticController.php
+++ b/app/Http/Controllers/StaticController.php
@@ -13,6 +13,7 @@ namespace App\Http\Controllers;
use App\Utils\Statics;
use Illuminate\Http\Response;
+use Invoiceninja\Einvoice\Decoder\Schema;
class StaticController extends BaseController
{
@@ -60,8 +61,8 @@ class StaticController extends BaseController
if(request()->has('einvoice')){
- // $schema = new Schema();
- // $response_data['einvoice_schema'] = $schema('FACT1');
+ $schema = new Schema();
+ $response_data['einvoice_schema'] = $schema('FACT1');
}
diff --git a/app/Http/Controllers/WePayController.php b/app/Http/Controllers/WePayController.php
deleted file mode 100644
index b8669efd8540..000000000000
--- a/app/Http/Controllers/WePayController.php
+++ /dev/null
@@ -1,56 +0,0 @@
-firstOrFail();
-
- $data['user_id'] = $user->id;
- $data['user_company'] = $company;
-
- // $data['company_key'] = $company->company_key;
- // $data['db'] = $company->db;
-
- $wepay_driver = new WePayPaymentDriver(new CompanyGateway(), null, null);
-
- return $wepay_driver->setup($data);
- }
-
- public function finished()
- {
- return render('gateways.wepay.signup.finished');
- }
-}
diff --git a/app/Http/Requests/CompanyUser/UpdateCompanyUserRequest.php b/app/Http/Requests/CompanyUser/UpdateCompanyUserRequest.php
index f0927348ab24..5c17f5ccd52a 100644
--- a/app/Http/Requests/CompanyUser/UpdateCompanyUserRequest.php
+++ b/app/Http/Requests/CompanyUser/UpdateCompanyUserRequest.php
@@ -35,4 +35,14 @@ class UpdateCompanyUserRequest extends Request
{
return [];
}
+
+ public function prepareForValidation()
+ {
+ $input = $this->all();
+
+ if(isset($input['company_user']['user']))
+ unset($input['company_user']['user']);
+
+ $this->replace($input);
+ }
}
diff --git a/app/Http/Requests/Nordigen/ConnectNordigenBankIntegrationRequest.php b/app/Http/Requests/Nordigen/ConnectNordigenBankIntegrationRequest.php
index 1796d30fa785..9852d8e60316 100644
--- a/app/Http/Requests/Nordigen/ConnectNordigenBankIntegrationRequest.php
+++ b/app/Http/Requests/Nordigen/ConnectNordigenBankIntegrationRequest.php
@@ -45,6 +45,9 @@ class ConnectNordigenBankIntegrationRequest extends Request
$context = $this->getTokenContent();
+ if(isset($context['institution_id']))
+ $input['institution_id'] = $context['institution_id'];
+
$input["redirect"] = isset($context["is_react"]) && $context['is_react'] ? config('ninja.react_url') . "/#/settings/bank_accounts" : config('ninja.app_url');
$this->replace($input);
diff --git a/app/Http/Requests/Report/GenericReportRequest.php b/app/Http/Requests/Report/GenericReportRequest.php
index 7c8521a19305..1ebd60dc4321 100644
--- a/app/Http/Requests/Report/GenericReportRequest.php
+++ b/app/Http/Requests/Report/GenericReportRequest.php
@@ -26,7 +26,7 @@ class GenericReportRequest extends Request
*/
public function authorize(): bool
{
- return $this->checkAuthority();
+ return true;
}
public function rules()
@@ -68,27 +68,25 @@ class GenericReportRequest extends Request
$input['user_id'] = auth()->user()->id;
+ if(!$this->checkAuthority()){
+ $input['date_range'] = '';
+ $input['start_date'] = '';
+ $input['end_date'] = '';
+ $input['send_email'] = true;
+ $input['report_keys'] = [];
+ $input['document_email_attachment'] = false;
+ }
+
$this->replace($input);
}
private function checkAuthority()
{
- $this->error_message = ctrans('texts.authorization_failure');
/** @var \App\Models\User $user */
$user = auth()->user();
-
- if(Ninja::isHosted() && $user->account->isFreeHostedClient()){
- $this->error_message = ctrans('texts.upgrade_to_view_reports');
- return false;
- }
-
+
return $user->isAdmin() || $user->hasPermission('view_reports');
}
-
- protected function failedAuthorization()
- {
- throw new AuthorizationException($this->error_message);
- }
}
diff --git a/app/Jobs/Bank/MatchBankTransactions.php b/app/Jobs/Bank/MatchBankTransactions.php
index 5748dcecc052..2dabff1e05c7 100644
--- a/app/Jobs/Bank/MatchBankTransactions.php
+++ b/app/Jobs/Bank/MatchBankTransactions.php
@@ -289,6 +289,8 @@ class MatchBankTransactions implements ShouldQueue
private function createPayment($invoices, float $amount): void
{
+
+ $this->attachable_invoices = [];
$this->available_balance = $amount;
\DB::connection(config('database.default'))->transaction(function () use ($invoices) {
diff --git a/app/Jobs/Mail/NinjaMailerJob.php b/app/Jobs/Mail/NinjaMailerJob.php
index b1b1c94690eb..04edfe884073 100644
--- a/app/Jobs/Mail/NinjaMailerJob.php
+++ b/app/Jobs/Mail/NinjaMailerJob.php
@@ -152,19 +152,39 @@ class NinjaMailerJob implements ShouldQueue
LightLogs::create(new EmailSuccess($this->nmo->company->company_key, $this->nmo->mailable->subject))
->send();
- } catch (\Symfony\Component\Mime\Exception\RfcComplianceException $e) {
+ }
+ catch (\Symfony\Component\Mime\Exception\RfcComplianceException $e) {
nlog("Mailer failed with a Logic Exception {$e->getMessage()}");
$this->fail();
$this->cleanUpMailers();
$this->logMailError($e->getMessage(), $this->company->clients()->first());
return;
- } catch (\Symfony\Component\Mime\Exception\LogicException $e) {
+ }
+ catch (\Symfony\Component\Mime\Exception\LogicException $e) {
nlog("Mailer failed with a Logic Exception {$e->getMessage()}");
$this->fail();
$this->cleanUpMailers();
$this->logMailError($e->getMessage(), $this->company->clients()->first());
return;
- } catch (\Exception | \Google\Service\Exception $e) {
+ }
+ catch(\Symfony\Component\Mailer\Transport\Dsn $e){
+ nlog("Incorrectly configured mail server - setting to default mail driver.");
+ $this->nmo->settings->email_sending_method = 'default';
+ return $this->setMailDriver();
+ }
+ catch(\Google\Service\Exception $e){
+
+ if ($e->getCode() == '429') {
+
+ $message = "Google rate limiting triggered, we are queueing based on Gmail requirements.";
+ $this->logMailError($message, $this->company->clients()->first());
+ sleep(rand(1, 2));
+ $this->release(900);
+
+ }
+
+ }
+ catch (\Exception $e) {
nlog("Mailer failed with {$e->getMessage()}");
$message = $e->getMessage();
@@ -221,8 +241,7 @@ class NinjaMailerJob implements ShouldQueue
}
/* Releasing immediately does not add in the backoff */
- sleep(rand(5, 10));
-
+ sleep(rand(2, 3));
$this->release($this->backoff()[$this->attempts() - 1]);
}
@@ -779,15 +798,20 @@ class NinjaMailerJob implements ShouldQueue
return false;
}
- $token = json_decode($guzzle->post($url, [
- 'form_params' => [
- 'client_id' => config('ninja.o365.client_id'),
- 'client_secret' => config('ninja.o365.client_secret'),
- 'scope' => 'email Mail.Send offline_access profile User.Read openid',
- 'grant_type' => 'refresh_token',
- 'refresh_token' => $user->oauth_user_refresh_token
- ],
- ])->getBody()->getContents());
+ try {
+ $token = json_decode($guzzle->post($url, [
+ 'form_params' => [
+ 'client_id' => config('ninja.o365.client_id'),
+ 'client_secret' => config('ninja.o365.client_secret'),
+ 'scope' => 'email Mail.Send offline_access profile User.Read openid',
+ 'grant_type' => 'refresh_token',
+ 'refresh_token' => $user->oauth_user_refresh_token
+ ],
+ ])->getBody()->getContents());
+ }
+ catch(\Exception $e){
+ nlog("Problem getting new Microsoft token for User: {$user->email}");
+ }
if ($token) {
$user->oauth_user_refresh_token = property_exists($token, 'refresh_token') ? $token->refresh_token : $user->oauth_user_refresh_token;
diff --git a/app/Jobs/User/CreateUser.php b/app/Jobs/User/CreateUser.php
index 504a27b80a1c..73f5e968f325 100644
--- a/app/Jobs/User/CreateUser.php
+++ b/app/Jobs/User/CreateUser.php
@@ -17,6 +17,7 @@ use App\Models\User;
use App\Utils\Ninja;
use App\Utils\Traits\MakesHash;
use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Support\Str;
class CreateUser
{
@@ -62,6 +63,7 @@ class CreateUser
$user->fill($this->request);
$user->email = $this->request['email']; //todo need to remove this in production
$user->last_login = now();
+ $user->referral_code = Str::lower(Str::random(32));
$user->ip = request()->ip();
if (Ninja::isSelfHost()) {
diff --git a/app/Livewire/WepaySignup.php b/app/Livewire/WepaySignup.php
deleted file mode 100644
index 7ed96676e2dd..000000000000
--- a/app/Livewire/WepaySignup.php
+++ /dev/null
@@ -1,215 +0,0 @@
- ['required'],
- 'last_name' => ['required'],
- 'email' => ['required', 'email'],
- 'company_name' => ['required'],
- 'country' => ['required'],
- 'ach' => ['sometimes'],
- 'wepay_payment_tos_agree' => ['accepted'],
- 'debit_cards' => ['sometimes'],
- ];
-
- public function mount()
- {
- MultiDB::setDb($this->company->db);
-
- $user = User::find($this->user_id);
- $this->company = Company::query()->where('company_key', $this->company->company_key)->first();
-
- $this->fill([
- 'wepay_payment_tos_agree' => '',
- 'ach' => '',
- 'country' => 'US',
- 'user' => $user,
- 'first_name' => $user->first_name,
- 'last_name' => $user->last_name,
- 'email' => $user->email,
- 'company_name' => $this->company->present()->name(),
- 'saved' => ctrans('texts.confirm'),
- 'terms' => ''.ctrans('texts.terms_of_service').'',
- 'privacy_policy' => ''.ctrans('texts.privacy_policy').'',
- ]);
- }
-
- public function render()
- {
- return render('gateways.wepay.signup.wepay-signup');
- }
-
- public function submit()
- {
- MultiDB::setDb($this->company->db);
-
- $data = $this->validate($this->rules);
-
- //need to create or get a new WePay CompanyGateway
- $cg = CompanyGateway::query()->where('gateway_key', '8fdeed552015b3c7b44ed6c8ebd9e992')
- ->where('company_id', $this->company->id)
- ->firstOrNew();
-
- if (! $cg->id) {
- $fees_and_limits = new \stdClass();
- $fees_and_limits->{GatewayType::CREDIT_CARD} = new FeesAndLimits();
- $fees_and_limits->{GatewayType::BANK_TRANSFER} = new FeesAndLimits();
-
- $cg = CompanyGatewayFactory::create($this->company->id, $this->user->id);
- $cg->gateway_key = '8fdeed552015b3c7b44ed6c8ebd9e992';
- $cg->require_cvv = false;
- $cg->require_billing_address = false;
- $cg->require_shipping_address = false;
- $cg->update_details = false;
- $cg->config = encrypt(config('ninja.testvars.checkout'));
- $cg->fees_and_limits = $fees_and_limits;
- $cg->token_billing = 'always';
- $cg->save();
- }
-
- $this->saved = ctrans('texts.processing');
-
- $wepay_driver = new WePayPaymentDriver($cg, null, null);
-
- $wepay = $wepay_driver->init()->wepay;
-
- $user_details = [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'email' => $data['email'],
- 'first_name' => $data['first_name'],
- 'last_name' => $data['last_name'],
- 'original_ip' => request()->ip(),
- 'original_device' => request()->server('HTTP_USER_AGENT'),
- 'tos_acceptance_time' => time(),
- 'redirect_uri' => route('wepay.finished'),
- 'scope' => 'manage_accounts,collect_payments,view_user,preapprove_payments,send_money',
- ];
-
- $wepay_user = $wepay->request('user/register/', $user_details);
-
- $access_token = $wepay_user->access_token;
-
- $access_token_expires = $wepay_user->expires_in ? (time() + $wepay_user->expires_in) : null;
-
- $wepay = new WePay($access_token);
-
- $account_details = [
- 'name' => $data['company_name'],
- 'description' => ctrans('texts.wepay_account_description'),
- 'theme_object' => json_decode('{"name":"Invoice Ninja","primary_color":"0b4d78","secondary_color":"0b4d78","background_color":"f8f8f8","button_color":"33b753"}'),
- 'callback_uri' => route('payment_webhook', ['company_key' => $this->company->company_key, 'company_gateway_id' => $cg->hashed_id]),
- 'rbits' => $this->company->rBits(),
- 'country' => $data['country'],
- ];
-
- if ($data['country'] == 'CA') {
- $account_details['currencies'] = ['CAD'];
- $account_details['country_options'] = ['debit_opt_in' => boolval($data['debit_cards'])];
- } elseif ($data['country'] == 'GB') {
- $account_details['currencies'] = ['GBP'];
- }
-
- $wepay_account = $wepay->request('account/create/', $account_details);
- $confirmation_required = false;
-
- try {
- $wepay->request('user/send_confirmation/', []);
- $confirmation_required = true;
- } catch (\WePayException $ex) {
- if ($ex->getMessage() == 'This access_token is already approved.') {
- $confirmation_required = false;
- } else {
-
- /** @phpstan-ignore-next-line */
- request()->session()->flash('message', $ex->getMessage());
- }
-
- nlog('failed in try catch ');
- nlog($ex->getMessage());
- }
-
- $config = [
- 'userId' => $wepay_user->user_id,
- 'accessToken' => $access_token,
- 'tokenType' => $wepay_user->token_type,
- 'tokenExpires' => $access_token_expires,
- 'accountId' => $wepay_account->account_id,
- 'state' => $wepay_account->state,
- 'testMode' => config('ninja.wepay.environment') == 'staging',
- 'country' => $data['country'],
- ];
-
- $cg->setConfig($config);
- $cg->save();
-
- if ($confirmation_required) {
-
- /** @phpstan-ignore-next-line **/
- request()->session()->flash('message', trans('texts.created_wepay_confirmation_required'));
- } else {
- $update_uri = $wepay->request('/account/get_update_uri', [
- 'account_id' => $wepay_account->account_id,
- 'redirect_uri' => config('ninja.app_url'),
- ]);
-
- return redirect($update_uri->uri);
- }
-
- return redirect()->to('/wepay/finished');
- }
-}
diff --git a/app/Models/Presenters/ClientContactPresenter.php b/app/Models/Presenters/ClientContactPresenter.php
index c42d7c0f6097..3fc2e9aed3fa 100644
--- a/app/Models/Presenters/ClientContactPresenter.php
+++ b/app/Models/Presenters/ClientContactPresenter.php
@@ -44,4 +44,15 @@ class ClientContactPresenter extends EntityPresenter
{
return $this->name().' <'.$this->entity->email.'>' ?? '';
}
+
+ public function phone()
+ {
+ return strlen($this->phone ?? '') > 1 ? $this->phone : '';
+ }
+
+ public function email()
+ {
+ return strlen($this->email ?? '') > 1 ? $this->email : '';
+ }
+
}
diff --git a/app/Notifications/Ninja/WePayFailureNotification.php b/app/Notifications/Ninja/WePayFailureNotification.php
deleted file mode 100644
index 74199a4eb1d2..000000000000
--- a/app/Notifications/Ninja/WePayFailureNotification.php
+++ /dev/null
@@ -1,79 +0,0 @@
-company_id = $company_id;
- }
-
- /**
- * Get the notification's delivery channels.
- *
- * @param mixed $notifiable
- * @return array
- */
- public function via($notifiable)
- {
- return ['slack'];
- }
-
- /**
- * Get the mail representation of the notification.
- *
- * @param mixed $notifiable
- *
- */
- public function toMail($notifiable)
- {
- }
-
- /**
- * Get the array representation of the notification.
- *
- * @param mixed $notifiable
- * @return array
- */
- public function toArray($notifiable)
- {
- return [
- //
- ];
- }
-
- public function toSlack($notifiable)
- {
- $ip = '';
-
- if (request()) {
- $ip = request()->getClientIp();
- }
-
- return (new SlackMessage())
- ->success()
- ->from(ctrans('texts.notification_bot'))
- ->image('https://app.invoiceninja.com/favicon.png')
- ->content("New WePay ACH Failure from Company ID: {$this->company_id} IP: {$ip}");
- }
-}
diff --git a/app/PaymentDrivers/Sample/resources/pay.blade.php b/app/PaymentDrivers/Sample/resources/pay.blade.php
index ea05015e1c90..1734c9f328a9 100644
--- a/app/PaymentDrivers/Sample/resources/pay.blade.php
+++ b/app/PaymentDrivers/Sample/resources/pay.blade.php
@@ -45,7 +45,7 @@
@include('portal.ninja2020.gateways.includes.save_card')
- @include('portal.ninja2020.gateways.wepay.includes.credit_card')
+ @include('portal.ninja2020.gateways.stripe.includes.credit_card')
@include('portal.ninja2020.gateways.includes.pay_now')
diff --git a/app/PaymentDrivers/WePay/ACH.php b/app/PaymentDrivers/WePay/ACH.php
deleted file mode 100644
index d6dea4e464c7..000000000000
--- a/app/PaymentDrivers/WePay/ACH.php
+++ /dev/null
@@ -1,354 +0,0 @@
-wepay_payment_driver = $wepay_payment_driver;
- }
-
- public function authorizeView($data)
- {
- $data['gateway'] = $this->wepay_payment_driver;
- $data['country_code'] = $this->wepay_payment_driver?->client?->country ? $this->wepay_payment_driver->client->country->iso_3166_2 : $this->wepay_payment_driver->company_gateway->company->country()->iso_3166_2;
-
- return render('gateways.wepay.authorize.bank_transfer', $data);
- }
-
- public function authorizeResponse($request)
- {
- //https://developer.wepay.com/api/api-calls/credit_card#authorize
- $data = $request->all();
- // authorize the credit card
-
- //nlog($data);
- /*
- '_token' => '1Fk5CRj34up5ntKPvrFyMIAJhDdUNF3boqT3iIN3',
- 'company_gateway_id' => '39',
- 'payment_method_id' => '1',
- 'gateway_response' => NULL,
- 'is_default' => NULL,
- 'credit_card_id' => '180642154638',
- 'q' => '/client/payment_methods',
- 'method' => '1',
- */
-
- try {
- $response = $this->wepay_payment_driver->wepay->request('payment_bank/persist', [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'payment_bank_id' => (int) $data['bank_account_id'],
- ]);
- } catch (\Exception $e) {
- $this->wepay_payment_driver->sendFailureMail($e->getMessage());
-
- $message = [
- 'server_response' => $e->getMessage(),
- ];
-
- SystemLogger::dispatch(
- $e->getMessage(),
- SystemLog::CATEGORY_GATEWAY_RESPONSE,
- SystemLog::EVENT_GATEWAY_FAILURE,
- SystemLog::TYPE_WEPAY,
- $this->wepay_payment_driver->client,
- $this->wepay_payment_driver->client->company,
- );
-
- if (config('ninja.notification.slack')) {
- $this->wepay_payment_driver->company_gateway->company->notification(new WePayFailureNotification($this->wepay_payment_driver->company_gateway->company))->ninja();
- }
-
- throw new PaymentFailed($e->getMessage(), 400);
- }
- // display the response
- // nlog($response);
-
- if (in_array($response->state, ['new', 'pending', 'authorized'])) {
- $this->storePaymentMethod($response, GatewayType::BANK_TRANSFER);
-
- return redirect()->route('client.payment_methods.index');
- }
-
- throw new PaymentFailed('There was a problem adding this payment method.', 400);
- /*
- {
- "payment_bank_id": 12345,
- "bank_name": "Wells Fargo",
- "account_last_four": "6789",
- "state": "authorized"
- }
-
- state options: new, pending, authorized, disabled.
- */
- }
-
- /* If the bank transfer token is PENDING - we need to verify!! */
- //
-
- public function verificationView(ClientGatewayToken $token)
- {
- $this->wepay_payment_driver->init();
-
- $data = [
- 'token' => $token,
- 'gateway' => $this->wepay_payment_driver,
- ];
-
- return render('gateways.wepay.authorize.verify', $data);
- }
-
- /**
- {
- "client_id": 1234,
- "client_secret": "b1fc2f68-4d1f-4a",
- "payment_bank_id": 12345,
- "type": "microdeposits",
- "microdeposits": [
- 8,
- 12
- ]
- }
- */
- public function processVerification(Request $request, ClientGatewayToken $token)
- {
- $transactions = $request->input('transactions');
-
- $transformed_transactions = [];
-
- foreach ($transactions as $transaction) {
- $transformed_transactions[] = (int) $transaction;
- }
-
- try {
- $response = $this->wepay_payment_driver->wepay->request('payment_bank/verify', [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'payment_bank_id' => $token->token,
- 'type' => 'microdeposits',
- 'microdeposits' => $transformed_transactions,
- ]);
- } catch (\Exception $e) {
- nlog('we pay exception');
- nlog($e->getMessage());
-
- return redirect()->route('client.payment_methods.verification', ['payment_method' => $token->hashed_id, 'method' => GatewayType::BANK_TRANSFER])
- ->with('error', $e->getMessage());
- }
- /*
- {
- "payment_bank_id": 12345,
- "bank_name": "Wells Fargo",
- "account_last_four": "6789",
- "state": "authorized"
- }
- */
- nlog($response);
-
- //$meta = $token->meta;
- if ($response->state == 'authorized') {
- $meta = $token->meta;
- $meta->state = $response->state;
- $token->meta = $meta;
- $token->save();
-
- return redirect()->route('client.payment_methods.index');
- } else {
- return redirect()->route('client.payment_methods.verification', ['payment_method' => $token->hashed_id, 'method' => GatewayType::BANK_TRANSFER])
- ->with('error', ctrans('texts.verification_failed'));
- }
- }
-
- ///////////////////////////////////////////////////////////////////////////////////////
- public function paymentView(array $data)
- {
- $data['gateway'] = $this->wepay_payment_driver;
- $data['currency'] = $this->wepay_payment_driver->client->getCurrencyCode();
- $data['payment_method_id'] = GatewayType::BANK_TRANSFER;
- $data['amount'] = $data['total']['amount_with_fee'];
-
- return render('gateways.wepay.bank_transfer', $data);
- }
-
- public function paymentResponse($request)
- {
- $token = ClientGatewayToken::query()->find($this->decodePrimaryKey($request->input('source')));
- $token_meta = $token->meta;
-
- if (! property_exists($token_meta, 'state') || $token_meta->state != 'authorized') {
- $response = $this->wepay_payment_driver->wepay->request('/payment_bank', [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'payment_bank_id' => $token->token,
- ]);
-
- if ($response->state == 'authorized') {
- $meta = $token->meta;
- $meta->state = $response->state;
- $token->meta = $meta;
- $token->save();
- } else {
- return redirect()->route('client.payment_methods.verification', ['payment_method' => $token->hashed_id, 'method' => GatewayType::BANK_TRANSFER]);
- }
- }
-
- $app_fee = (config('ninja.wepay.fee_ach_multiplier') * $this->wepay_payment_driver->payment_hash->data->amount_with_fee) + config('ninja.wepay.fee_fixed');
-
- try {
- $response = $this->wepay_payment_driver->wepay->request('checkout/create', [
- // 'callback_uri' => route('payment_webhook', ['company_key' => $this->wepay_payment_driver->company_gateway->company->company_key, 'company_gateway_id' => $this->wepay_payment_driver->company_gateway->hashed_id]),
- 'unique_id' => Str::random(40),
- 'account_id' => $this->wepay_payment_driver->company_gateway->getConfigField('accountId'),
- 'amount' => $this->wepay_payment_driver->payment_hash->data->amount_with_fee,
- 'currency' => $this->wepay_payment_driver->client->getCurrencyCode(),
- 'short_description' => 'Goods and Services',
- 'type' => 'goods',
- 'fee' => [
- 'fee_payer' => config('ninja.wepay.fee_payer'),
- 'app_fee' => $app_fee,
- ],
- 'payment_method' => [
- 'type' => 'payment_bank',
- 'payment_bank' => [
- 'id' => $token->token,
- ],
- ],
- ]);
- } catch (\Exception $e) {
- throw new PaymentFailed($e->getMessage(), 500);
- }
-
- /* Merge all data and store in the payment hash*/
- $state = [
- 'server_response' => $response,
- 'payment_hash' => $request->payment_hash,
- ];
-
- $state = array_merge($state, $request->all());
- $this->wepay_payment_driver->payment_hash->data = array_merge((array) $this->wepay_payment_driver->payment_hash->data, $state);
- $this->wepay_payment_driver->payment_hash->save();
-
- if (in_array($response->state, ['authorized', 'captured'])) {
- //success
- nlog('success');
- $payment_status = $response->state == 'authorized' ? Payment::STATUS_COMPLETED : Payment::STATUS_PENDING;
-
- return $this->processSuccessfulPayment($response, $payment_status, GatewayType::BANK_TRANSFER);
- }
-
- if (in_array($response->state, ['released', 'cancelled', 'failed', 'expired'])) {
- //some type of failure
- nlog('failure');
-
- $payment_status = $response->state == 'cancelled' ? Payment::STATUS_CANCELLED : Payment::STATUS_FAILED;
-
- $this->processUnSuccessfulPayment($response, $payment_status);
- }
- }
-
- private function storePaymentMethod($response, $payment_method_id)
- {
- $payment_meta = new \stdClass();
- $payment_meta->exp_month = (string) '';
- $payment_meta->exp_year = (string) '';
- $payment_meta->brand = (string) $response->bank_name;
- $payment_meta->last4 = (string) $response->account_last_four;
- $payment_meta->type = GatewayType::BANK_TRANSFER;
- $payment_meta->state = $response->state;
-
- $data = [
- 'payment_meta' => $payment_meta,
- 'token' => $response->payment_bank_id,
- 'payment_method_id' => $payment_method_id,
- ];
-
- $this->wepay_payment_driver->storeGatewayToken($data);
- }
-
- public function tokenBilling($token, $payment_hash)
- {
- $token_meta = $token->meta;
-
- if (! property_exists($token_meta, 'state') || $token_meta->state != 'authorized') {
- return redirect()->route('client.payment_methods.verification', ['payment_method' => $token->hashed_id, 'method' => GatewayType::BANK_TRANSFER]);
- }
-
- $amount = array_sum(array_column($this->wepay_payment_driver->payment_hash->invoices(), 'amount')) + $this->wepay_payment_driver->payment_hash->fee_total;
-
- $app_fee = (config('ninja.wepay.fee_cc_multiplier') * $amount) + config('ninja.wepay.fee_fixed');
-
- $response = $this->wepay_payment_driver->wepay->request('checkout/create', [
- 'unique_id' => Str::random(40),
- 'account_id' => $this->wepay_payment_driver->company_gateway->getConfigField('accountId'),
- 'amount' => $amount,
- 'currency' => $this->wepay_payment_driver->client->getCurrencyCode(),
- 'short_description' => 'Goods and Services',
- 'type' => 'goods',
- 'fee' => [
- 'fee_payer' => config('ninja.wepay.fee_payer'),
- 'app_fee' => $app_fee,
- ],
- 'payment_method' => [
- 'type' => 'payment_bank',
- 'payment_bank' => [
- 'id' => $token->token,
- ],
- ],
- ]);
-
- /* Merge all data and store in the payment hash*/
- $state = [
- 'server_response' => $response,
- 'payment_hash' => $this->wepay_payment_driver->payment_hash,
- ];
-
- $this->wepay_payment_driver->payment_hash->data = array_merge((array) $this->wepay_payment_driver->payment_hash->data, $state);
- $this->wepay_payment_driver->payment_hash->save();
-
- if (in_array($response->state, ['authorized', 'captured'])) {
- //success
- nlog('success');
- $payment_status = $response->state == 'authorized' ? Payment::STATUS_COMPLETED : Payment::STATUS_PENDING;
-
- return $this->processSuccessfulPayment($response, $payment_status, GatewayType::BANK_TRANSFER, true);
- }
-
- if (in_array($response->state, ['released', 'cancelled', 'failed', 'expired'])) {
- //some type of failure
- nlog('failure');
-
- $payment_status = $response->state == 'cancelled' ? Payment::STATUS_CANCELLED : Payment::STATUS_FAILED;
-
- $this->processUnSuccessfulPayment($response, $payment_status);
- }
- }
-}
diff --git a/app/PaymentDrivers/WePay/CreditCard.php b/app/PaymentDrivers/WePay/CreditCard.php
deleted file mode 100644
index 2e15012d7c1f..000000000000
--- a/app/PaymentDrivers/WePay/CreditCard.php
+++ /dev/null
@@ -1,346 +0,0 @@
-wepay_payment_driver = $wepay_payment_driver;
- }
-
- public function authorizeView($data)
- {
- $data['gateway'] = $this->wepay_payment_driver;
- $data['country_code'] = $this->wepay_payment_driver?->client?->country ? $this->wepay_payment_driver->client->country->iso_3166_2 : $this->wepay_payment_driver->company_gateway->company->country()->iso_3166_2;
-
- return render('gateways.wepay.authorize.authorize', $data);
- }
-
- public function authorizeResponse($request)
- {
- //https://developer.wepay.com/api/api-calls/credit_card#authorize
- $data = $request->all();
- // authorize the credit card
-
- // nlog($data);
- /*
- '_token' => '1Fk5CRj34up5ntKPvrFyMIAJhDdUNF3boqT3iIN3',
- 'company_gateway_id' => '39',
- 'payment_method_id' => '1',
- 'gateway_response' => NULL,
- 'is_default' => NULL,
- 'credit_card_id' => '180642154638',
- 'q' => '/client/payment_methods',
- 'method' => '1',
- */
-
- try {
- $response = $this->wepay_payment_driver->wepay->request('credit_card/authorize', [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'credit_card_id' => (int) $data['credit_card_id'],
- ]);
- } catch (\Exception $e) {
- return $this->wepay_payment_driver->processInternallyFailedPayment($this->wepay_payment_driver, $e);
- }
- // display the response
- // nlog($response);
-
- if (in_array($response->state, ['new', 'authorized'])) {
- $this->storePaymentMethod($response, GatewayType::CREDIT_CARD);
-
- return redirect()->route('client.payment_methods.index');
- }
-
- throw new PaymentFailed('There was a problem adding this payment method.', 400);
- /*
- [credit_card_id] => 348084962473
- [credit_card_name] => Visa xxxxxx4018
- [state] => authorized
- [user_name] => Joey Diaz
- [email] => user@example.com
- [create_time] => 1623798172
- [expiration_month] => 10
- [expiration_year] => 2023
- [last_four] => 4018
- [input_source] => card_keyed
- [virtual_terminal_mode] => none
- [card_on_file] =>
- [recurring] =>
- [cvv_provided] => 1
- [auto_update] =>
- */
- }
-
- public function paymentView(array $data)
- {
- $data['gateway'] = $this->wepay_payment_driver;
- $data['description'] = ctrans('texts.invoices').': '.collect($data['invoices'])->pluck('invoice_number');
- $data['country_code'] = $this->wepay_payment_driver?->client?->country ? $this->wepay_payment_driver->client->country->iso_3166_2 : $this->wepay_payment_driver->company_gateway->company()->iso_3166_2;
-
- return render('gateways.wepay.credit_card.pay', $data);
- }
-
- public function paymentResponse(PaymentResponseRequest $request)
- {
- nlog('payment response');
-
- //it could be an existing token or a new credit_card_id that needs to be converted into a wepay token
- if ($request->has('credit_card_id') && $request->input('credit_card_id')) {
- nlog('authorize the card first!');
-
- try {
- $response = $this->wepay_payment_driver->wepay->request('credit_card/authorize', [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'credit_card_id' => (int) $request->input('credit_card_id'),
- ]);
- } catch (\Exception $e) {
- return $this->wepay_payment_driver->processInternallyFailedPayment($this->wepay_payment_driver, $e);
- }
-
- $credit_card_id = (int) $response->credit_card_id;
-
- if (in_array($response->state, ['new', 'authorized']) && boolval($request->input('store_card'))) {
- $this->storePaymentMethod($response, GatewayType::CREDIT_CARD);
- }
- } else {
- $credit_card_id = (int) $request->input('token');
- }
-
- // USD, CAD, and GBP.
- // nlog($request->all());
-
- $app_fee = (config('ninja.wepay.fee_cc_multiplier') * $this->wepay_payment_driver->payment_hash->data->amount_with_fee) + config('ninja.wepay.fee_fixed');
- // charge the credit card
-
- try {
- $response = $this->wepay_payment_driver->wepay->request('checkout/create', [
- 'unique_id' => Str::random(40),
- 'account_id' => $this->wepay_payment_driver->company_gateway->getConfigField('accountId'),
- 'amount' => $this->wepay_payment_driver->payment_hash->data->amount_with_fee,
- 'currency' => $this->wepay_payment_driver->client->getCurrencyCode(),
- 'short_description' => 'Goods and services',
- 'type' => 'goods',
- 'fee' => [
- 'fee_payer' => config('ninja.wepay.fee_payer'),
- 'app_fee' => $app_fee,
- ],
- 'payment_method' => [
- 'type' => 'credit_card',
- 'credit_card' => [
- 'id' => $credit_card_id,
- ],
- ],
- ]);
- } catch (\Exception $e) {
- $this->wepay_payment_driver->sendFailureMail($e->getMessage());
-
- $message = [
- 'server_response' => $e->getMessage(),
- 'data' => $this->wepay_payment_driver->payment_hash->data,
- ];
-
- SystemLogger::dispatch(
- $e->getMessage(),
- SystemLog::CATEGORY_GATEWAY_RESPONSE,
- SystemLog::EVENT_GATEWAY_FAILURE,
- SystemLog::TYPE_WEPAY,
- $this->wepay_payment_driver->client,
- $this->wepay_payment_driver->client->company,
- );
-
- throw new PaymentFailed($e->getMessage(), 500);
- }
-
- /* Merge all data and store in the payment hash*/
- $state = [
- 'server_response' => $response,
- 'payment_hash' => $request->payment_hash,
- ];
-
- $state = array_merge($state, $request->all());
- $this->wepay_payment_driver->payment_hash->data = array_merge((array) $this->wepay_payment_driver->payment_hash->data, $state);
- $this->wepay_payment_driver->payment_hash->save();
-
- if (in_array($response->state, ['authorized', 'captured'])) {
- //success
- nlog('success');
- $payment_status = $response->state == 'authorized' ? Payment::STATUS_COMPLETED : Payment::STATUS_PENDING;
-
- return $this->processSuccessfulPayment($response, $payment_status, GatewayType::CREDIT_CARD);
- }
-
- if (in_array($response->state, ['released', 'cancelled', 'failed', 'expired'])) {
- //some type of failure
- nlog('failure');
-
- $payment_status = $response->state == 'cancelled' ? Payment::STATUS_CANCELLED : Payment::STATUS_FAILED;
-
- $this->processUnSuccessfulPayment($response, $payment_status);
- }
- }
-
- /*
- new The checkout was created by the application. This state typically indicates that checkouts created in WePay's hosted checkout flow are waiting for the payer to submit their information.
- authorized The payer entered their payment info and confirmed the payment on WePay. WePay has successfully charged the card.
- captured The payment has been reserved from the payer.
- released The payment has been credited to the payee account. Note that the released state may be active although there are active partial refunds or partial chargebacks.
- cancelled The payment has been cancelled by the payer, payee, or application.
- refunded The payment was captured and then refunded by the payer, payee, or application. The payment has been debited from the payee account.
- charged back The payment has been charged back by the payer and the payment has been debited from the payee account.
- failed The payment has failed.
- expired Checkouts expire if they remain in the new state for more than 30 minutes (e.g., they have been abandoned).
- */
-
- /*
- https://developer.wepay.com/api/api-calls/checkout
- {
- "checkout_id": 649945633,
- "account_id": 1548718026,
- "type": "donation",
- "short_description": "test checkout",
- "currency": "USD",
- "amount": 20,
- "state": "authorized",
- "soft_descriptor": "WPY*Wolverine",
- "auto_release": true,
- "create_time": 1463589958,
- "gross": 20.88,
- "reference_id": null,
- "callback_uri": null,
- "long_description": null,
- "delivery_type": null,
- "initiated_by": "merchant",
- "in_review": false,
- "fee": {
- "app_fee": 0,
- "processing_fee": 0.88,
- "fee_payer": "payer"
- },
- "chargeback": {
- "amount_charged_back": 0,
- "dispute_uri": null
- },
- "refund": {
- "amount_refunded": 0,
- "refund_reason": null
- },
- "payment_method": {
- "type": "credit_card",
- "credit_card": {
- "id": 1684847614,
- "data": {
- "emv_receipt": null,
- "signature_url": null
- },
- "auto_release": false
- }
- },
- "hosted_checkout": null,
- "payer": {
- "email": "test@example.com",
- "name": "Mr Smith",
- "home_address": null
- },
- "npo_information": null,
- "payment_error": null
- }
- */
-
- private function storePaymentMethod($response, $payment_method_id)
- {
- nlog('storing card');
-
- $payment_meta = new \stdClass();
- $payment_meta->exp_month = (string) $response->expiration_month;
- $payment_meta->exp_year = (string) $response->expiration_year;
- $payment_meta->brand = (string) $response->credit_card_name;
- $payment_meta->last4 = (string) $response->last_four;
- $payment_meta->type = GatewayType::CREDIT_CARD;
-
- $data = [
- 'payment_meta' => $payment_meta,
- 'token' => $response->credit_card_id,
- 'payment_method_id' => $payment_method_id,
- ];
-
- $this->wepay_payment_driver->storeGatewayToken($data);
- }
-
- public function tokenBilling($cgt, $payment_hash)
- {
- $amount = array_sum(array_column($this->wepay_payment_driver->payment_hash->invoices(), 'amount')) + $this->wepay_payment_driver->payment_hash->fee_total;
-
- $app_fee = (config('ninja.wepay.fee_cc_multiplier') * $amount) + config('ninja.wepay.fee_fixed');
- // charge the credit card
- $response = $this->wepay_payment_driver->wepay->request('checkout/create', [
- 'unique_id' => Str::random(40),
- 'account_id' => $this->wepay_payment_driver->company_gateway->getConfigField('accountId'),
- 'amount' => $amount,
- 'currency' => $this->wepay_payment_driver->client->getCurrencyCode(),
- 'short_description' => 'Goods and services',
- 'type' => 'goods',
- 'fee' => [
- 'fee_payer' => config('ninja.wepay.fee_payer'),
- 'app_fee' => $app_fee,
- ],
- 'payment_method' => [
- 'type' => 'credit_card',
- 'credit_card' => [
- 'id' => $cgt->token,
- ],
- ],
- ]);
-
- /* Merge all data and store in the payment hash*/
- $state = [
- 'server_response' => $response,
- 'payment_hash' => $payment_hash,
- ];
-
- $this->wepay_payment_driver->payment_hash->data = array_merge((array) $this->wepay_payment_driver->payment_hash->data, $state);
- $this->wepay_payment_driver->payment_hash->save();
-
- if (in_array($response->state, ['authorized', 'captured'])) {
- //success
- nlog('success');
- $payment_status = $response->state == 'authorized' ? Payment::STATUS_COMPLETED : Payment::STATUS_PENDING;
-
- return $this->processSuccessfulPayment($response, $payment_status, GatewayType::CREDIT_CARD, true);
- }
-
- if (in_array($response->state, ['released', 'cancelled', 'failed', 'expired'])) {
- //some type of failure
- nlog('failure');
-
- $payment_status = $response->state == 'cancelled' ? Payment::STATUS_CANCELLED : Payment::STATUS_FAILED;
-
- $this->processUnSuccessfulPayment($response, $payment_status);
- }
- }
-}
diff --git a/app/PaymentDrivers/WePay/Setup.php b/app/PaymentDrivers/WePay/Setup.php
deleted file mode 100644
index 19b04e95c27a..000000000000
--- a/app/PaymentDrivers/WePay/Setup.php
+++ /dev/null
@@ -1,34 +0,0 @@
-wepay = $wepay;
- }
-
- public function boot($data)
- {
- /*
- 'user_id',
- 'user_company',
- */
-
- return render('gateways.wepay.signup.index', $data);
- }
-}
diff --git a/app/PaymentDrivers/WePay/WePayCommon.php b/app/PaymentDrivers/WePay/WePayCommon.php
deleted file mode 100644
index ab3365f41655..000000000000
--- a/app/PaymentDrivers/WePay/WePayCommon.php
+++ /dev/null
@@ -1,75 +0,0 @@
- $payment_type,
- 'amount' => $response->amount,
- 'transaction_reference' => $response->checkout_id,
- 'gateway_type_id' => $gateway_type,
- ];
-
- $payment = $this->wepay_payment_driver->createPayment($data, $payment_status);
-
- SystemLogger::dispatch(
- ['response' => $this->wepay_payment_driver->payment_hash->data->server_response, 'data' => $data],
- SystemLog::CATEGORY_GATEWAY_RESPONSE,
- SystemLog::EVENT_GATEWAY_SUCCESS,
- SystemLog::TYPE_WEPAY,
- $this->wepay_payment_driver->client,
- $this->wepay_payment_driver->client->company,
- );
-
- if ($return_payment) {
- return $payment;
- }
-
- return redirect()->route('client.payments.show', ['payment' => $this->wepay_payment_driver->encodePrimaryKey($payment->id)]);
- }
-
- private function processUnSuccessfulPayment($response, $payment_status)
- {
- $this->wepay_payment_driver->sendFailureMail($response->state);
-
- $message = [
- 'server_response' => $response,
- 'data' => $this->wepay_payment_driver->payment_hash->data,
- ];
-
- SystemLogger::dispatch(
- $message,
- SystemLog::CATEGORY_GATEWAY_RESPONSE,
- SystemLog::EVENT_GATEWAY_FAILURE,
- SystemLog::TYPE_WEPAY,
- $this->wepay_payment_driver->client,
- $this->wepay_payment_driver->client->company,
- );
-
- throw new PaymentFailed('Failed to process the payment.', 500);
- }
-}
diff --git a/app/PaymentDrivers/WePayPaymentDriver.php b/app/PaymentDrivers/WePayPaymentDriver.php
index 4b7254344e80..2cd93f7905de 100644
--- a/app/PaymentDrivers/WePayPaymentDriver.php
+++ b/app/PaymentDrivers/WePayPaymentDriver.php
@@ -17,13 +17,12 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentHash;
use App\Models\SystemLog;
-use App\PaymentDrivers\WePay\ACH;
-use App\PaymentDrivers\WePay\CreditCard;
-use App\PaymentDrivers\WePay\Setup;
use App\Utils\Traits\MakesHash;
use Illuminate\Http\Request;
-use WePay;
+/**
+ * @deprecated 5.9
+ */
class WePayPaymentDriver extends BaseDriver
{
use MakesHash;
@@ -45,27 +44,14 @@ class WePayPaymentDriver extends BaseDriver
/* Maps the Payment Gateway Type - to its implementation */
public static $methods = [
- GatewayType::CREDIT_CARD => CreditCard::class,
- GatewayType::BANK_TRANSFER => ACH::class,
];
public const SYSTEM_LOG_TYPE = SystemLog::TYPE_WEPAY;
public function init()
{
- if (WePay::getEnvironment() == 'none') {
- if (config('ninja.wepay.environment') == 'staging') {
- WePay::useStaging(config('ninja.wepay.client_id'), config('ninja.wepay.client_secret'));
- } else {
- WePay::useProduction(config('ninja.wepay.client_id'), config('ninja.wepay.client_secret'));
- }
- }
+ throw new \Exception("Gateway no longer supported", 500);
- if ($this->company_gateway) {
- $this->wepay = new WePay($this->company_gateway->getConfigField('accessToken'));
- } else {
- $this->wepay = new WePay(null);
- }
return $this;
}
@@ -93,7 +79,6 @@ class WePayPaymentDriver extends BaseDriver
*/
public function setup(array $data)
{
- return (new Setup($this))->boot($data);
}
/**
@@ -168,140 +153,17 @@ class WePayPaymentDriver extends BaseDriver
public function processWebhookRequest(PaymentWebhookRequest $request, Payment $payment = null)
{
$this->init();
-
- $input = $request->all();
-
- $config = $this->company_gateway->getConfig();
-
- $accountId = $this->company_gateway->getConfigField('accountId');
- $objectId = false;
- $objectType = '';
-
- foreach (array_keys($input) as $key) {
- if ('_id' == substr($key, -3)) {
- $objectType = substr($key, 0, -3);
- $objectId = $input[$key];
- break;
- }
- }
-
- if (! $objectId) {
- throw new \Exception('Could not find object id parameter');
- }
-
- if ($objectType == 'credit_card') {
- $payment_method = ClientGatewayToken::where('token', $objectId)->first();
-
- if (! $payment_method) {
- throw new \Exception('Unknown payment method');
- }
-
- $source = $this->wepay->request('credit_card', [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'credit_card_id' => (int) $objectId,
- ]);
-
- if ($source->state == 'deleted') {
- $payment_method->delete();
- } else {
- //$this->paymentService->convertPaymentMethodFromWePay($source, null, $paymentMethod)->save();
- }
-
- return 'Processed successfully';
- } elseif ($objectType == 'account') {
- if ($accountId != $objectId) {
- throw new \Exception('Unknown account '.$accountId.' does not equal '.$objectId);
- }
-
- $wepayAccount = $this->wepay->request('account', [
- 'account_id' => (int) $objectId,
- ]);
-
- if ($wepayAccount->state == 'deleted') {
- $this->company_gateway->delete();
- } else {
- $config->state = $wepayAccount->state;
- $this->company_gateway->setConfig($config);
- $this->company_gateway->save();
- }
-
- return ['message' => 'Processed successfully'];
- } elseif ($objectType == 'checkout') {
- /** @var \App\Models\Payment $payment */
- $payment = Payment::where('company_id', $this->company_gateway->company_id)
- ->where('transaction_reference', '=', $objectId)
- ->first();
-
- if (! $payment) {
- throw new \Exception('Unknown payment');
- }
-
- if ($payment->is_deleted) {
- throw new \Exception('Payment is deleted');
- }
-
- $checkout = $this->wepay->request('checkout', [
- 'checkout_id' => intval($objectId),
- ]);
-
- if ($checkout->state == 'captured') {
- $payment->status_id = Payment::STATUS_COMPLETED;
- $payment->save();
- } elseif ($checkout->state == 'cancelled') {
- $payment->service()->deletePayment()->save();
- } elseif ($checkout->state == 'failed') {
- $payment->status_id = Payment::STATUS_FAILED;
- $payment->save();
- }
-
- return 'Processed successfully';
- } else {
- return 'Ignoring event';
- }
-
- return true;
}
public function refund(Payment $payment, $amount, $return_client_response = false)
{
$this->init();
- $response = $this->wepay->request('checkout/refund', [
- 'checkout_id' => $payment->transaction_reference,
- 'refund_reason' => 'Refund by merchant',
- 'amount' => $amount,
- ]);
-
- return [
- 'transaction_reference' => $response->checkout_id,
- 'transaction_response' => json_encode($response),
- 'success' => $response->state == 'refunded' ? true : false,
- 'description' => 'refund',
- 'code' => 0,
- ];
}
public function detach(ClientGatewayToken $token)
{
- /*Bank accounts cannot be deleted - only CC*/
- if ($token->gateway_type_id == 2) {
- return true;
- }
-
- $this->init();
-
- $response = $this->wepay->request('/credit_card/delete', [
- 'client_id' => config('ninja.wepay.client_id'),
- 'client_secret' => config('ninja.wepay.client_secret'),
- 'credit_card_id' => intval($token->token),
- ]);
-
- if ($response->state == 'deleted') {
- return true;
- } else {
- throw new \Exception(trans('texts.failed_remove_payment_method'));
- }
+
}
public function getClientRequiredFields(): array
diff --git a/app/Providers/ClientPortalServiceProvider.php b/app/Providers/ClientPortalServiceProvider.php
index 46abc838b0cc..5c134bdb8e90 100644
--- a/app/Providers/ClientPortalServiceProvider.php
+++ b/app/Providers/ClientPortalServiceProvider.php
@@ -1,4 +1,13 @@
bank_integration_id = $data['bank_integration_id'];
}
-
$bank_transaction->fill($data);
$bank_transaction->save();
@@ -43,7 +42,7 @@ class BankTransactionRepository extends BaseRepository
$data['transactions'] = $bank_transactions->map(function ($bt) {
return ['id' => $bt->id, 'invoice_ids' => $bt->invoice_ids, 'ninja_category_id' => $bt->ninja_category_id];
})->toArray();
-
+
$bts = (new MatchBankTransactions($user->company()->id, $user->company()->db, $data))->handle();
}
diff --git a/app/Services/EDocument/Standards/FatturaPANew.php b/app/Services/EDocument/Standards/FatturaPANew.php
new file mode 100644
index 000000000000..870021d08ddd
--- /dev/null
+++ b/app/Services/EDocument/Standards/FatturaPANew.php
@@ -0,0 +1,288 @@
+init()
+ ->setIdTrasmittente() //order of execution matters.
+ ->setDatiTrasmissione()
+ ->setIdFiscaleIVA()
+ ->setAnagrafica()
+ ->setDatiAnagrafici()
+ ->setCedentePrestatore()
+ ->setClientDetails()
+ ->setDatiGeneraliDocumento()
+ ->setDatiGenerali()
+ ->setLineItems()
+ ->setDettaglioPagamento()
+ ->setFatturaElettronica();
+ }
+
+ public function getFatturaElettronica(): FatturaElettronica
+ {
+ return $this->FatturaElettronica;
+ }
+
+ private function setDatiTrasmissione(): self
+ {
+
+ $this->DatiTrasmissione->FormatoTrasmissione = "FPR12";
+ $this->DatiTrasmissione->CodiceDestinatario = $this->invoice->client->routing_id;
+ $this->DatiTrasmissione->ProgressivoInvio = $this->invoice->number;
+
+ $this->DatiTrasmissione->IdTrasmittente = $this->IdTrasmittente;
+
+ $this->FatturaElettronicaHeader->DatiTrasmissione = $this->DatiTrasmissione;
+
+ return $this;
+ }
+
+
+ private function setIdTrasmittente():self
+ {
+ $this->IdTrasmittente->IdPaese = $this->invoice->company->country()->iso_3166_2;
+ $this->IdTrasmittente->IdCodice = $this->invoice->company->settings->vat_number;
+
+ return $this;
+ }
+
+ private function setCedentePrestatore():self
+ {
+ $this->CedentePrestatore->DatiAnagrafici = $this->DatiAnagrafici;
+
+ $sede = new Sede;
+ $sede->Indirizzo = $this->invoice->company->settings->address1;
+ $sede->CAP = (int)$this->invoice->company->settings->postal_code;
+ $sede->Comune = $this->invoice->company->settings->city;
+ $sede->Provincia = $this->invoice->company->settings->state;
+ $sede->Nazione = $this->invoice->company->country()->iso_3166_2;
+ $this->CedentePrestatore->Sede = $sede;
+
+ $this->FatturaElettronicaHeader->CedentePrestatore = $this->CedentePrestatore;
+
+ return $this;
+ }
+
+ private function setDatiAnagrafici():self
+ {
+ $this->DatiAnagrafici->RegimeFiscale = "RF01";
+ $this->DatiAnagrafici->Anagrafica = $this->Anagrafica;
+ $this->DatiAnagrafici->IdFiscaleIVA = $this->IdFiscaleIVA;
+
+ return $this;
+ }
+
+ private function setClientDetails():self
+ {
+
+ $datiAnagrafici = new DatiAnagrafici();
+ $anagrafica = new Anagrafica();
+ $anagrafica->Denominazione = $this->invoice->client->present()->name();
+ $datiAnagrafici->Anagrafica = $anagrafica;
+
+ $idFiscale = new IdFiscaleIVA;
+ $idFiscale->IdCodice= $this->invoice->client->vat_number;
+ $idFiscale->IdPaese = $this->invoice->client->country->iso_3166_2;
+
+ $datiAnagrafici->IdFiscaleIVA = $idFiscale;
+
+ $sede = new Sede;
+ $sede->Indirizzo = $this->invoice->client->address1;
+ $sede->CAP = (int)$this->invoice->client->postal_code;
+ $sede->Comune = $this->invoice->client->city;
+ $sede->Provincia = $this->invoice->client->state;
+ $sede->Nazione = $this->invoice->client->country->iso_3166_2;
+
+ $cessionarioCommittente = new CessionarioCommittente;
+ $cessionarioCommittente->DatiAnagrafici = $datiAnagrafici;
+ $cessionarioCommittente->Sede = $sede;
+
+ $this->FatturaElettronicaHeader->CessionarioCommittente = $cessionarioCommittente;
+
+ return $this;
+ }
+
+ private function setIdFiscaleIVA():self
+ {
+
+ $this->IdFiscaleIVA->IdPaese = $this->invoice->company->country()->iso_3166_2;
+ $this->IdFiscaleIVA->IdCodice = $this->invoice->company->settings->vat_number;
+
+ return $this;
+ }
+
+ //this is a choice, need to switch based on values here.
+ private function setAnagrafica():self
+ {
+ $this->Anagrafica->Denominazione = $this->invoice->company->present()->name();
+
+ return $this;
+ }
+
+ private function setDatiGeneraliDocumento():self
+ {
+
+ $this->DatiGeneraliDocumento->TipoDocumento = "TD01";
+ $this->DatiGeneraliDocumento->Divisa = $this->invoice->client->currency()->code;
+ $this->DatiGeneraliDocumento->Data = new \DateTime($this->invoice->date);
+ $this->DatiGeneraliDocumento->Numero = $this->invoice->number;
+ $this->DatiGeneraliDocumento->Causale[] = substr($this->invoice->public_notes ?? '',0, 200); //unsure..
+
+ return $this;
+ }
+
+ private function setDatiGenerali():self
+ {
+ $this->DatiGenerali->DatiGeneraliDocumento = $this->DatiGeneraliDocumento;
+
+ $this->FatturaElettronicaBody->DatiGenerali = $this->DatiGenerali;
+
+ return $this;
+ }
+
+ private function setDettaglioPagamento():self
+ {
+
+ $this->DettaglioPagamento->ModalitaPagamento = "MP01"; //String
+ $this->DettaglioPagamento->DataScadenzaPagamento = new \DateTime($this->invoice->due_date ?? $this->invoice->date);
+ $this->DettaglioPagamento->ImportoPagamento = (string) sprintf('%0.2f', $this->invoice->balance);
+
+ $DatiPagamento = new DatiPagamento;
+ $DatiPagamento->CondizioniPagamento = "TP02";
+ $DatiPagamento->DettaglioPagamento[] = $this->DettaglioPagamento;
+
+ $this->FatturaElettronicaBody->DatiPagamento[] = $DatiPagamento;
+
+ return $this;
+ }
+
+ private function setLineItems(): self
+ {
+
+ $calc = $this->invoice->calc();
+
+ $datiBeniServizi = new DatiBeniServizi();
+ $tax_rate_level = 0;
+ //line items
+ foreach ($this->invoice->line_items as $key => $item) {
+
+ $numero = $key + 1;
+ $dettaglioLinee = new DettaglioLinee;
+ $dettaglioLinee->NumeroLinea = "{$numero}";
+ $dettaglioLinee->Descrizione = $item->notes ?? 'Descrizione';
+ $dettaglioLinee->Quantita = sprintf('%0.2f', $item->quantity);
+ $dettaglioLinee->PrezzoUnitario = sprintf('%0.2f', $item->cost);
+ $dettaglioLinee->PrezzoTotale = sprintf('%0.2f', $item->line_total);
+ $dettaglioLinee->AliquotaIVA = sprintf('%0.2f', $item->tax_rate1);
+
+
+ $datiBeniServizi->DettaglioLinee[] = $dettaglioLinee;
+
+ if ($item->tax_rate1 > $tax_rate_level) {
+ $tax_rate_level = sprintf('%0.2f', $item->tax_rate1);
+ }
+
+ }
+
+ //totals
+ if($this->invoice->tax_rate1 > $tax_rate_level) {
+ $tax_rate_level = sprintf('%0.2f', $this->invoice->tax_rate1);
+ }
+
+ $subtotal = sprintf('%0.2f', $calc->getSubTotal());
+ $taxes = sprintf('%0.2f', $calc->getTotalTaxes());
+
+ $datiRiepilogo = new DatiRiepilogo;
+ $datiRiepilogo->AliquotaIVA = "{$tax_rate_level}";
+ $datiRiepilogo->ImponibileImporto = "{$subtotal}";
+ $datiRiepilogo->Imposta = "{$taxes}";
+ $datiRiepilogo->EsigibilitaIVA = "I";
+
+ $datiBeniServizi->DatiRiepilogo[] = $datiRiepilogo;
+
+ $this->FatturaElettronicaBody->DatiBeniServizi = $datiBeniServizi;
+
+ return $this;
+ }
+
+ private function setFatturaElettronica(): self
+ {
+
+ $this->FatturaElettronica->FatturaElettronicaBody[] = $this->FatturaElettronicaBody;
+ $this->FatturaElettronica->FatturaElettronicaHeader = $this->FatturaElettronicaHeader;
+
+ return $this;
+ }
+
+ private function init(): self
+ {
+
+ $this->FatturaElettronica = new FatturaElettronica;
+ $this->FatturaElettronicaBody = new FatturaElettronicaBody;
+ $this->FatturaElettronicaHeader = new FatturaElettronicaHeader;
+ $this->DatiTrasmissione = new DatiTrasmissione;
+ $this->IdTrasmittente = new IdTrasmittente;
+ $this->CedentePrestatore = new CedentePrestatore;
+ $this->DatiAnagrafici = new DatiAnagrafici;
+ $this->IdFiscaleIVA = new IdFiscaleIVA;
+ $this->Anagrafica = new Anagrafica;
+ $this->DatiGeneraliDocumento = new DatiGeneraliDocumento;
+ $this->DatiGenerali = new DatiGenerali;
+ $this->DettaglioPagamento = new DettaglioPagamento;
+
+ return $this;
+
+ }
+}
\ No newline at end of file
diff --git a/app/Services/Email/Email.php b/app/Services/Email/Email.php
index e56091c909d5..f1bd7ee01d11 100644
--- a/app/Services/Email/Email.php
+++ b/app/Services/Email/Email.php
@@ -302,7 +302,26 @@ class Email implements ShouldQueue
$this->cleanUpMailers();
$this->logMailError($e->getMessage(), $this->company->clients()->first());
return;
- } catch (\Exception | \RuntimeException | \Google\Service\Exception $e) {
+ }
+ catch(\Symfony\Component\Mailer\Transport\Dsn $e){
+ nlog("Incorrectly configured mail server - setting to default mail driver.");
+ $this->email_object->settings->email_sending_method = 'default';
+ return $this->setMailDriver();
+ }
+ catch(\Google\Service\Exception $e){
+
+ if ($e->getCode() == '429') {
+
+ $message = "Google rate limiting triggered, we are queueing based on Gmail requirements.";
+ $this->logMailError($message, $this->company->clients()->first());
+ sleep(rand(1, 2));
+ $this->release(900);
+ $message = null;
+ }
+
+ }
+
+ catch (\Exception | \RuntimeException $e) {
nlog("Mailer failed with {$e->getMessage()}");
$message = $e->getMessage();
@@ -916,15 +935,20 @@ class Email implements ShouldQueue
$guzzle = new \GuzzleHttp\Client();
$url = 'https://login.microsoftonline.com/common/oauth2/v2.0/token';
- $token = json_decode($guzzle->post($url, [
- 'form_params' => [
- 'client_id' => config('ninja.o365.client_id'),
- 'client_secret' => config('ninja.o365.client_secret'),
- 'scope' => 'email Mail.Send offline_access profile User.Read openid',
- 'grant_type' => 'refresh_token',
- 'refresh_token' => $user->oauth_user_refresh_token
- ],
- ])->getBody()->getContents());
+ try {
+ $token = json_decode($guzzle->post($url, [
+ 'form_params' => [
+ 'client_id' => config('ninja.o365.client_id'),
+ 'client_secret' => config('ninja.o365.client_secret'),
+ 'scope' => 'email Mail.Send offline_access profile User.Read openid',
+ 'grant_type' => 'refresh_token',
+ 'refresh_token' => $user->oauth_user_refresh_token
+ ],
+ ])->getBody()->getContents());
+ }
+ catch(\Exception $e){
+ nlog("Problem getting new Microsoft token for User: {$user->email}");
+ }
if ($token) {
$user->oauth_user_refresh_token = property_exists($token, 'refresh_token') ? $token->refresh_token : $user->oauth_user_refresh_token;
diff --git a/app/Services/Email/EmailDefaults.php b/app/Services/Email/EmailDefaults.php
index efcc85660683..718ac515dc6b 100644
--- a/app/Services/Email/EmailDefaults.php
+++ b/app/Services/Email/EmailDefaults.php
@@ -166,9 +166,9 @@ class EmailDefaults
private function setBody(): self
{
- if (strlen($this->email->email_object->body) > 3) {
+ if (strlen($this->email->email_object->body ?? '') > 3) {
// A Custom Message has been set in the email screen.
- } elseif (strlen($this->email->email_object->settings?->{$this->email->email_object->email_template_body}) > 3) {
+ } elseif (strlen($this->email->email_object->settings?->{$this->email->email_object->email_template_body} ?? '') > 3) {
// A body has been saved in the settings.
$this->email->email_object->body = $this->email->email_object->settings?->{$this->email->email_object->email_template_body};
} else {
diff --git a/app/Services/Payment/DeletePayment.php b/app/Services/Payment/DeletePayment.php
index c7d0a63270c6..74973c0f8a46 100644
--- a/app/Services/Payment/DeletePayment.php
+++ b/app/Services/Payment/DeletePayment.php
@@ -59,6 +59,7 @@ class DeletePayment
$this->payment->delete();
BankTransaction::query()->where('payment_id', $this->payment->id)->cursor()->each(function ($bt) {
+ $bt->invoice_ids = null;
$bt->payment_id = null;
$bt->status_id = 1;
$bt->save();
diff --git a/app/Services/Pdf/PdfMock.php b/app/Services/Pdf/PdfMock.php
index 4d7f6a7a50dc..9801d89cc6c3 100644
--- a/app/Services/Pdf/PdfMock.php
+++ b/app/Services/Pdf/PdfMock.php
@@ -27,11 +27,13 @@ use App\Models\PurchaseOrderInvitation;
use App\Models\Quote;
use App\Models\QuoteInvitation;
use App\Models\Vendor;
+use App\Utils\Traits\GeneratesCounter;
use App\Utils\Traits\MakesHash;
class PdfMock
{
use MakesHash;
+ use GeneratesCounter;
private mixed $mock;
@@ -206,6 +208,20 @@ class PdfMock
*/
public function getStubVariables(): array
{
+ $entity_pattern = $this->entity_string.'_number_pattern';
+ $entity_number = '0029';
+
+ if (!empty($this->settings->{$entity_pattern})) {
+ // Although $this->mock is the Invoice/etc entity,
+ // we need the invitation to get company details.
+ $entity_number = $this->getFormattedEntityNumber(
+ $this->mock->invitation,
+ (int) $entity_number,
+ $this->settings->counter_padding,
+ $this->settings->{$entity_pattern},
+ );
+ }
+
return ['values' =>
[
'$client.shipping_postal_code' => '46420',
@@ -309,10 +325,10 @@ class PdfMock
'$invoice.custom2' => 'custom value',
'$invoice.custom3' => 'custom value',
'$invoice.custom4' => 'custom value',
- '$company.custom1' => $this->company->custom_value1,
- '$company.custom2' => $this->company->custom_value2,
- '$company.custom3' => $this->company->custom_value3,
- '$company.custom4' => $this->company->custom_value4,
+ '$company.custom1' => $this->company->settings->custom_value1,
+ '$company.custom2' => $this->company->settings->custom_value2,
+ '$company.custom3' => $this->company->settings->custom_value3,
+ '$company.custom4' => $this->company->settings->custom_value4,
'$quote.po_number' => 'PO12345',
'$company.website' => $this->settings->website,
'$balance_due_raw' => '0.00',
@@ -325,7 +341,7 @@ class PdfMock
'$client.currency' => 'USD',
'$company.country' => $this->company->country()?->name ?? 'USA',
'$company.address' => $this->company->present()->address(),
- '$tech_hero_image' => 'http://ninja.test:8000/images/pdf-designs/tech-hero-image.jpg',
+ '$tech_hero_image' => 'https://invoicing.co/images/pdf-designs/tech-hero-image.jpg',
'$task.tax_name1' => '',
'$task.tax_name2' => '',
'$task.tax_name3' => '',
@@ -370,7 +386,7 @@ class PdfMock
'$company.phone' => $this->settings->phone,
'$company.state' => $this->settings->state,
'$credit.number' => '0029',
- '$entity_number' => '0029',
+ '$entity_number' => $entity_number,
'$credit_number' => '0029',
'$global_margin' => '6.35mm',
'$contact.phone' => '681-480-9828',
@@ -456,10 +472,10 @@ class PdfMock
'$task.tax' => '',
'$discount' => '$0.00',
'$subtotal' => '$0.00',
- '$company1' => $this->company->custom_value1,
- '$company2' => $this->company->custom_value2,
- '$company3' => $this->company->custom_value3,
- '$company4' => $this->company->custom_value4,
+ '$company1' => $this->company->settings->custom_value1,
+ '$company2' => $this->company->settings->custom_value2,
+ '$company3' => $this->company->settings->custom_value3,
+ '$company4' => $this->company->settings->custom_value4,
'$due_date' => '2022-01-01',
'$poNumber' => 'PO-123456',
'$quote_no' => '0029',
@@ -606,10 +622,10 @@ class PdfMock
'$task.description_label' => ctrans('texts.description'),
'$product.discount_label' => ctrans('texts.discount'),
'$product.quantity_label' => ctrans('texts.quantity'),
- '$entity_issued_to_label' => ctrans('texts.quote_issued_to'),
+ '$entity_issued_to_label' => ctrans("texts.{$this->entity_string}_issued_to") ?: ctrans('texts.quote_issued_to'),
'$partial_due_date_label' => ctrans('texts.partial_due_date'),
'$invoice.datetime_label' => ctrans('texts.datetime_format_id'),
- '$invoice.due_date_label' => ctrans('texts.due_date'),
+ '$invoice.due_date_label' => ctrans('texts.invoice_due_date'),
'$company.address1_label' => ctrans('texts.address1'),
'$company.address2_label' => ctrans('texts.address2'),
'$total_tax_labels_label' => ctrans('texts.total_taxes'),
@@ -704,16 +720,16 @@ class PdfMock
'$contact.email_label' => ctrans('texts.email'),
'$invoice.taxes_label' => ctrans('texts.taxes'),
'$credit_amount_label' => ctrans('texts.credit_amount'),
- '$invoice.total_label' => ctrans('texts.total'),
+ '$invoice.total_label' => ctrans('texts.invoice_total'),
'$product.date_label' => ctrans('texts.date'),
'$product.item_label' => ctrans('texts.item'),
'$public_notes_label' => ctrans('texts.public_notes'),
'$entity.terms_label' => ctrans('texts.terms'),
'$task.service_label' => ctrans('texts.service'),
'$portalButton_label' => '',
- '$payment.date_label' => ctrans('texts.date'),
+ '$payment.date_label' => ctrans('texts.payment_date'),
'$client.phone_label' => ctrans('texts.phone'),
- '$invoice.date_label' => ctrans('texts.date'),
+ '$invoice.date_label' => ctrans('texts.invoice_date'),
'$client.state_label' => ctrans('texts.state'),
'$number_short_label' => '',
'$quote.number_label' => ctrans('texts.number'),
diff --git a/app/Utils/Traits/GeneratesCounter.php b/app/Utils/Traits/GeneratesCounter.php
index 731e39a504ea..39448d02dbb3 100644
--- a/app/Utils/Traits/GeneratesCounter.php
+++ b/app/Utils/Traits/GeneratesCounter.php
@@ -288,7 +288,6 @@ trait GeneratesCounter
*/
public function getNextProjectNumber(Project $project): string
{
-
$entity_number = $this->getNextEntityNumber(Project::class, $project->client, false);
return $this->replaceUserVars($project, $entity_number);
@@ -412,7 +411,7 @@ trait GeneratesCounter
*
* @param string $pattern
* @param string $prefix
- * @return string The padded and prefixed entity number
+ * @return string The padded, prefixed and unique entity number
*/
private function checkEntityNumber($class, $entity, $counter, $padding, $pattern, $prefix = ''): string
{
@@ -420,11 +419,7 @@ trait GeneratesCounter
$check_counter = 1;
do {
- $number = $this->padCounter($counter, $padding);
-
- $number = $this->applyNumberPattern($entity, $number, $pattern);
-
- $number = $this->prefixCounter($number, $prefix);
+ $number = $this->getFormattedEntityNumber($entity, $counter, $padding, $pattern);
$check = $class::where('company_id', $entity->company_id)->where('number', $number)->withTrashed()->exists();
@@ -443,6 +438,26 @@ trait GeneratesCounter
return $number;
}
+ /**
+ * Formats the entity number according to pattern, prefix and padding.
+ *
+ * @param Collection $entity The entity ie App\Models\Client, Invoice, Quote etc
+ * @param int $counter The counter
+ * @param int $padding The padding
+ * @param string $pattern
+ * @param string $prefix
+ *
+ * @return string The padded and prefixed entity number
+ */
+ public function getFormattedEntityNumber($entity, $counter, $padding, $pattern, $prefix = ''): string
+ {
+ $number = $this->padCounter($counter, $padding);
+
+ $number = $this->applyNumberPattern($entity, $number, $pattern);
+
+ return $this->prefixCounter($number, $prefix);
+ }
+
/*Check if a number is available for use. */
public function checkNumberAvailable($class, $entity, $number): bool
{
diff --git a/composer.json b/composer.json
index 06738df83297..801f0decb20a 100644
--- a/composer.json
+++ b/composer.json
@@ -31,7 +31,7 @@
],
"type": "project",
"require": {
- "php": "^8.1|^8.2",
+ "php": "^8.2",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
@@ -56,7 +56,6 @@
"hashids/hashids": "^4.0",
"hedii/laravel-gelf-logger": "^8",
"horstoeko/zugferd": "^1",
- "horstoeko/orderx": "^1",
"imdhemy/laravel-purchases": "^1.7",
"intervention/image": "^2.5",
"invoiceninja/inspector": "^2.0",
@@ -87,7 +86,6 @@
"sentry/sentry-laravel": "^3",
"setasign/fpdf": "^1.8",
"setasign/fpdi": "^2.3",
- "shopify/shopify-api": "^4.3",
"socialiteproviders/apple": "dev-master",
"socialiteproviders/microsoft": "^4.1",
"spatie/laravel-data": "^3.5",
@@ -103,12 +101,13 @@
"twig/twig": "^3",
"twilio/sdk": "^6.40",
"webpatser/laravel-countries": "dev-master#75992ad",
- "wepay/php-sdk": "^0.3",
"wildbit/postmark-php": "^4.0",
- "hyvor/php-json-exporter": "^0.0.3"
+ "hyvor/php-json-exporter": "^0.0.3",
+ "invoiceninja/einvoice": "dev-main",
+ "horstoeko/orderx": "dev-master"
},
"require-dev": {
- "php": "^8.1|^8.2",
+ "php": "^8.2",
"barryvdh/laravel-debugbar": "^3.6",
"barryvdh/laravel-ide-helper": "^2.13",
"beyondcode/laravel-query-detector": "^1.8",
@@ -120,7 +119,7 @@
"mockery/mockery": "^1.4.4",
"nunomaduro/collision": "^7.0",
"phpstan/phpstan": "^1.9",
- "phpunit/phpunit": "^10.0",
+ "phpunit/phpunit": "^10",
"spatie/laravel-ignition": "^2.0",
"spaze/phpstan-stripe": "^3.0"
},
@@ -184,6 +183,10 @@
{
"type":"vcs",
"url": "https://github.com/invoiceninja/einvoice"
+ },
+ {
+ "type": "vcs",
+ "url": "https://github.com/turbo124/orderx"
}
],
"minimum-stability": "dev",
diff --git a/composer.lock b/composer.lock
index ab4aa4eec903..9fa157960e63 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "6904626bbe465492796c27cd86ad4d2c",
+ "content-hash": "4a46c646e01374b4a5aaff1875fa9975",
"packages": [
{
"name": "adrienrn/php-mimetyper",
@@ -959,16 +959,16 @@
},
{
"name": "apimatic/core",
- "version": "0.3.9",
+ "version": "0.3.10",
"source": {
"type": "git",
"url": "https://github.com/apimatic/core-lib-php.git",
- "reference": "faea523afc30a9fa5ed2b08d929b5a14ba3c00b1"
+ "reference": "8c111790b8d6f67812ba651ebb9513b5233863d0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/apimatic/core-lib-php/zipball/faea523afc30a9fa5ed2b08d929b5a14ba3c00b1",
- "reference": "faea523afc30a9fa5ed2b08d929b5a14ba3c00b1",
+ "url": "https://api.github.com/repos/apimatic/core-lib-php/zipball/8c111790b8d6f67812ba651ebb9513b5233863d0",
+ "reference": "8c111790b8d6f67812ba651ebb9513b5233863d0",
"shasum": ""
},
"require": {
@@ -1007,9 +1007,9 @@
],
"support": {
"issues": "https://github.com/apimatic/core-lib-php/issues",
- "source": "https://github.com/apimatic/core-lib-php/tree/0.3.9"
+ "source": "https://github.com/apimatic/core-lib-php/tree/0.3.10"
},
- "time": "2024-05-09T08:01:58+00:00"
+ "time": "2024-05-30T06:32:24+00:00"
},
{
"name": "apimatic/core-interfaces",
@@ -1226,16 +1226,16 @@
},
{
"name": "authorizenet/authorizenet",
- "version": "2.0.2",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/AuthorizeNet/sdk-php.git",
- "reference": "a3e76f96f674d16e892f87c58bedb99dada4b067"
+ "reference": "e1acf55c9cb22bef1852b1e494502973ade11cce"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/AuthorizeNet/sdk-php/zipball/a3e76f96f674d16e892f87c58bedb99dada4b067",
- "reference": "a3e76f96f674d16e892f87c58bedb99dada4b067",
+ "url": "https://api.github.com/repos/AuthorizeNet/sdk-php/zipball/e1acf55c9cb22bef1852b1e494502973ade11cce",
+ "reference": "e1acf55c9cb22bef1852b1e494502973ade11cce",
"shasum": ""
},
"require": {
@@ -1263,9 +1263,9 @@
],
"support": {
"issues": "https://github.com/AuthorizeNet/sdk-php/issues",
- "source": "https://github.com/AuthorizeNet/sdk-php/tree/2.0.2"
+ "source": "https://github.com/AuthorizeNet/sdk-php/tree/2.0.3"
},
- "time": "2021-03-31T18:22:14+00:00"
+ "time": "2024-05-29T17:33:13+00:00"
},
{
"name": "awobaz/compoships",
@@ -1385,16 +1385,16 @@
},
{
"name": "aws/aws-sdk-php",
- "version": "3.308.3",
+ "version": "3.308.6",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
- "reference": "7fa0625056fa1fcf6732f89ba37b3f630d78de59"
+ "reference": "d119265faba226b3fab1514b6fa27a2986b91453"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7fa0625056fa1fcf6732f89ba37b3f630d78de59",
- "reference": "7fa0625056fa1fcf6732f89ba37b3f630d78de59",
+ "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/d119265faba226b3fab1514b6fa27a2986b91453",
+ "reference": "d119265faba226b3fab1514b6fa27a2986b91453",
"shasum": ""
},
"require": {
@@ -1474,9 +1474,9 @@
"support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues",
- "source": "https://github.com/aws/aws-sdk-php/tree/3.308.3"
+ "source": "https://github.com/aws/aws-sdk-php/tree/3.308.6"
},
- "time": "2024-05-24T18:29:40+00:00"
+ "time": "2024-05-30T18:08:56+00:00"
},
{
"name": "bacon/bacon-qr-code",
@@ -3602,16 +3602,16 @@
},
{
"name": "google/apiclient-services",
- "version": "v0.356.0",
+ "version": "v0.357.0",
"source": {
"type": "git",
"url": "https://github.com/googleapis/google-api-php-client-services.git",
- "reference": "8e22b0a6f661f2db3f99abb6ee5a1dcf28d370e7"
+ "reference": "c84b0ac2191d56d40d43bc18e62b37a2781040a9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/8e22b0a6f661f2db3f99abb6ee5a1dcf28d370e7",
- "reference": "8e22b0a6f661f2db3f99abb6ee5a1dcf28d370e7",
+ "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/c84b0ac2191d56d40d43bc18e62b37a2781040a9",
+ "reference": "c84b0ac2191d56d40d43bc18e62b37a2781040a9",
"shasum": ""
},
"require": {
@@ -3640,9 +3640,9 @@
],
"support": {
"issues": "https://github.com/googleapis/google-api-php-client-services/issues",
- "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.356.0"
+ "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.357.0"
},
- "time": "2024-05-18T01:10:18+00:00"
+ "time": "2024-05-27T01:02:20+00:00"
},
{
"name": "google/auth",
@@ -4466,16 +4466,16 @@
},
{
"name": "horstoeko/orderx",
- "version": "v1.0.21",
+ "version": "dev-master",
"source": {
"type": "git",
- "url": "https://github.com/horstoeko/orderx.git",
- "reference": "eaa2bd74b03c6845a38ef4611501cc4e70adbef7"
+ "url": "https://github.com/turbo124/orderx.git",
+ "reference": "92b5f713ae3d07ba409f38218e1f0b131ad5fb05"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/horstoeko/orderx/zipball/eaa2bd74b03c6845a38ef4611501cc4e70adbef7",
- "reference": "eaa2bd74b03c6845a38ef4611501cc4e70adbef7",
+ "url": "https://api.github.com/repos/turbo124/orderx/zipball/92b5f713ae3d07ba409f38218e1f0b131ad5fb05",
+ "reference": "92b5f713ae3d07ba409f38218e1f0b131ad5fb05",
"shasum": ""
},
"require": {
@@ -4488,7 +4488,7 @@
"setasign/fpdf": "^1",
"setasign/fpdi": "^2",
"smalot/pdfparser": "^0",
- "symfony/validator": "^5|^6",
+ "symfony/validator": "^5|^6|^7",
"symfony/yaml": "^5|^6"
},
"require-dev": {
@@ -4501,13 +4501,56 @@
"sebastian/phpcpd": "^6",
"squizlabs/php_codesniffer": "^3"
},
+ "default-branch": true,
"type": "package",
"autoload": {
"psr-4": {
"horstoeko\\orderx\\": "src"
}
},
- "notification-url": "https://packagist.org/downloads/",
+ "autoload-dev": {
+ "psr-4": {
+ "horstoeko\\orderx\\tests\\": "tests"
+ }
+ },
+ "scripts": {
+ "tests": [
+ "./vendor/bin/phpunit ./tests/"
+ ],
+ "testsreal": [
+ "./vendor/bin/phpunit --configuration ./build/phpunit.xml"
+ ],
+ "phpcs": [
+ "./vendor/bin/phpcs --standard=./build/phpcsrules.xml --extensions=php --ignore=autoload.php ./src ./tests"
+ ],
+ "phpcs12": [
+ "./vendor/bin/phpcs --standard=./build/phpcsrules_psr12.xml --extensions=php --ignore=autoload.php ./src ./tests"
+ ],
+ "phpcbf": [
+ "./vendor/bin/phpcbf -q ./src ./tests"
+ ],
+ "phpcbf1": [
+ "./vendor/bin/phpcbf --standard=./build/phpcsrules_psr1.xml -q ./src ./tests"
+ ],
+ "phpcbf2": [
+ "./vendor/bin/phpcbf --standard=./build/phpcsrules_psr2.xml -q ./src ./tests"
+ ],
+ "phpcbf12": [
+ "./vendor/bin/phpcbf --standard=./build/phpcsrules_psr12.xml -q ./src ./tests"
+ ],
+ "phpcbfsq": [
+ "./vendor/bin/phpcbf --standard=./build/phpcsrules_squiz.xml -q ./src ./tests"
+ ],
+ "phpstan": [
+ "./vendor/bin/phpstan analyze -c ./build/phpstan.neon --autoload-file=vendor/autoload.php --no-interaction --no-progress --xdebug"
+ ],
+ "phpstan_cs": [
+ "./vendor/bin/phpstan analyze -c ./build/phpstan.neon --autoload-file=vendor/autoload.php --no-interaction --no-progress --error-format=checkstyle --xdebug"
+ ],
+ "makedoc": [
+ "phing -f ./build.xml projectdoc"
+ ]
+ },
"license": [
"MIT"
],
@@ -4527,10 +4570,9 @@
"orderx"
],
"support": {
- "issues": "https://github.com/horstoeko/orderx/issues",
- "source": "https://github.com/horstoeko/orderx/tree/v1.0.21"
+ "source": "https://github.com/turbo124/orderx/tree/master"
},
- "time": "2024-04-18T04:14:03+00:00"
+ "time": "2024-05-26T21:58:53+00:00"
},
{
"name": "horstoeko/stringmanagement",
@@ -4588,16 +4630,16 @@
},
{
"name": "horstoeko/zugferd",
- "version": "v1.0.47",
+ "version": "v1.0.49",
"source": {
"type": "git",
"url": "https://github.com/horstoeko/zugferd.git",
- "reference": "7a5a8b7bb44f7aebfd66af112662c30383f31dd9"
+ "reference": "bc4f9180c455deae20fb0281b519a550cbfbd1ea"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/horstoeko/zugferd/zipball/7a5a8b7bb44f7aebfd66af112662c30383f31dd9",
- "reference": "7a5a8b7bb44f7aebfd66af112662c30383f31dd9",
+ "url": "https://api.github.com/repos/horstoeko/zugferd/zipball/bc4f9180c455deae20fb0281b519a550cbfbd1ea",
+ "reference": "bc4f9180c455deae20fb0281b519a550cbfbd1ea",
"shasum": ""
},
"require": {
@@ -4657,9 +4699,9 @@
],
"support": {
"issues": "https://github.com/horstoeko/zugferd/issues",
- "source": "https://github.com/horstoeko/zugferd/tree/v1.0.47"
+ "source": "https://github.com/horstoeko/zugferd/tree/v1.0.49"
},
- "time": "2024-05-23T03:12:53+00:00"
+ "time": "2024-05-30T14:58:49+00:00"
},
{
"name": "http-interop/http-factory-guzzle",
@@ -5028,6 +5070,59 @@
],
"time": "2022-05-21T17:30:32+00:00"
},
+ {
+ "name": "invoiceninja/einvoice",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/invoiceninja/einvoice.git",
+ "reference": "6bc18a07aa1792277950388422550e1d4ddf042b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/invoiceninja/einvoice/zipball/6bc18a07aa1792277950388422550e1d4ddf042b",
+ "reference": "6bc18a07aa1792277950388422550e1d4ddf042b",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/collections": "^10.48",
+ "phpdocumentor/reflection-docblock": "^5.4",
+ "sabre/xml": "^4.0",
+ "symfony/property-access": "^7",
+ "symfony/property-info": "^7.0",
+ "symfony/serializer": "^7",
+ "symfony/validator": "^7"
+ },
+ "require-dev": {
+ "milo/schematron": "^1.0",
+ "nette/php-generator": "^4.1",
+ "phpstan/phpstan": "^1.11",
+ "phpunit/phpunit": "^10.5",
+ "symfony/console": "^7"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Invoiceninja\\Einvoice\\": "src/"
+ }
+ },
+ "license": [
+ "Elastic-2.0"
+ ],
+ "authors": [
+ {
+ "name": "David Bomba",
+ "email": "turbo124@gmail.com"
+ }
+ ],
+ "description": "Schema for einvoicing standards",
+ "support": {
+ "source": "https://github.com/invoiceninja/einvoice/tree/main",
+ "issues": "https://github.com/invoiceninja/einvoice/issues"
+ },
+ "time": "2024-05-31T02:34:14+00:00"
+ },
{
"name": "invoiceninja/inspector",
"version": "v2.0",
@@ -5589,16 +5684,16 @@
},
{
"name": "laravel/framework",
- "version": "v10.48.11",
+ "version": "v10.48.12",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "afdc2b03bd8d126446583da5414d659491aa4f54"
+ "reference": "590afea38e708022662629fbf5184351fa82cf08"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/afdc2b03bd8d126446583da5414d659491aa4f54",
- "reference": "afdc2b03bd8d126446583da5414d659491aa4f54",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/590afea38e708022662629fbf5184351fa82cf08",
+ "reference": "590afea38e708022662629fbf5184351fa82cf08",
"shasum": ""
},
"require": {
@@ -5792,20 +5887,20 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2024-05-21T17:53:51+00:00"
+ "time": "2024-05-28T15:46:19+00:00"
},
{
"name": "laravel/prompts",
- "version": "v0.1.22",
+ "version": "v0.1.23",
"source": {
"type": "git",
"url": "https://github.com/laravel/prompts.git",
- "reference": "37f94de71758dbfbccc9d299b0e5eb76e02a40f5"
+ "reference": "9bc4df7c699b0452c6b815e64a2d84b6d7f99400"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/prompts/zipball/37f94de71758dbfbccc9d299b0e5eb76e02a40f5",
- "reference": "37f94de71758dbfbccc9d299b0e5eb76e02a40f5",
+ "url": "https://api.github.com/repos/laravel/prompts/zipball/9bc4df7c699b0452c6b815e64a2d84b6d7f99400",
+ "reference": "9bc4df7c699b0452c6b815e64a2d84b6d7f99400",
"shasum": ""
},
"require": {
@@ -5848,9 +5943,9 @@
"description": "Add beautiful and user-friendly forms to your command-line applications.",
"support": {
"issues": "https://github.com/laravel/prompts/issues",
- "source": "https://github.com/laravel/prompts/tree/v0.1.22"
+ "source": "https://github.com/laravel/prompts/tree/v0.1.23"
},
- "time": "2024-05-10T19:22:18+00:00"
+ "time": "2024-05-27T13:53:20+00:00"
},
{
"name": "laravel/serializable-closure",
@@ -6176,34 +6271,34 @@
},
{
"name": "lcobucci/clock",
- "version": "3.0.0",
+ "version": "3.2.0",
"source": {
"type": "git",
"url": "https://github.com/lcobucci/clock.git",
- "reference": "039ef98c6b57b101d10bd11d8fdfda12cbd996dc"
+ "reference": "6f28b826ea01306b07980cb8320ab30b966cd715"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/lcobucci/clock/zipball/039ef98c6b57b101d10bd11d8fdfda12cbd996dc",
- "reference": "039ef98c6b57b101d10bd11d8fdfda12cbd996dc",
+ "url": "https://api.github.com/repos/lcobucci/clock/zipball/6f28b826ea01306b07980cb8320ab30b966cd715",
+ "reference": "6f28b826ea01306b07980cb8320ab30b966cd715",
"shasum": ""
},
"require": {
- "php": "~8.1.0 || ~8.2.0",
+ "php": "~8.2.0 || ~8.3.0",
"psr/clock": "^1.0"
},
"provide": {
"psr/clock-implementation": "1.0"
},
"require-dev": {
- "infection/infection": "^0.26",
- "lcobucci/coding-standard": "^9.0",
- "phpstan/extension-installer": "^1.2",
- "phpstan/phpstan": "^1.9.4",
- "phpstan/phpstan-deprecation-rules": "^1.1.1",
- "phpstan/phpstan-phpunit": "^1.3.2",
- "phpstan/phpstan-strict-rules": "^1.4.4",
- "phpunit/phpunit": "^9.5.27"
+ "infection/infection": "^0.27",
+ "lcobucci/coding-standard": "^11.0.0",
+ "phpstan/extension-installer": "^1.3.1",
+ "phpstan/phpstan": "^1.10.25",
+ "phpstan/phpstan-deprecation-rules": "^1.1.3",
+ "phpstan/phpstan-phpunit": "^1.3.13",
+ "phpstan/phpstan-strict-rules": "^1.5.1",
+ "phpunit/phpunit": "^10.2.3"
},
"type": "library",
"autoload": {
@@ -6224,7 +6319,7 @@
"description": "Yet another clock abstraction",
"support": {
"issues": "https://github.com/lcobucci/clock/issues",
- "source": "https://github.com/lcobucci/clock/tree/3.0.0"
+ "source": "https://github.com/lcobucci/clock/tree/3.2.0"
},
"funding": [
{
@@ -6236,7 +6331,7 @@
"type": "patreon"
}
],
- "time": "2022-12-19T15:00:24+00:00"
+ "time": "2023-11-17T17:00:27+00:00"
},
{
"name": "lcobucci/jwt",
@@ -9480,6 +9575,70 @@
},
"time": "2020-06-27T09:03:43+00:00"
},
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c",
+ "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/deprecations": "^1.1",
+ "ext-filter": "*",
+ "php": "^7.4 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.7",
+ "phpstan/phpdoc-parser": "^1.7",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.5",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-webmozart-assert": "^1.2",
+ "phpunit/phpunit": "^9.5",
+ "vimeo/psalm": "^5.13"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1"
+ },
+ "time": "2024-05-21T05:55:05+00:00"
+ },
{
"name": "phpdocumentor/type-resolver",
"version": "1.8.2",
@@ -9830,16 +9989,16 @@
},
{
"name": "phpstan/phpdoc-parser",
- "version": "1.29.0",
+ "version": "1.29.1",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc"
+ "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc",
- "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4",
+ "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4",
"shasum": ""
},
"require": {
@@ -9871,9 +10030,9 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
- "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.0"
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1"
},
- "time": "2024-05-06T12:04:23+00:00"
+ "time": "2024-05-31T08:52:43+00:00"
},
{
"name": "pragmarx/google2fa",
@@ -11534,69 +11693,6 @@
],
"time": "2023-12-11T16:03:32+00:00"
},
- {
- "name": "shopify/shopify-api",
- "version": "v4.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Shopify/shopify-api-php.git",
- "reference": "80cde593a69acb9b9095235fa8f7748e9389294c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Shopify/shopify-api-php/zipball/80cde593a69acb9b9095235fa8f7748e9389294c",
- "reference": "80cde593a69acb9b9095235fa8f7748e9389294c",
- "shasum": ""
- },
- "require": {
- "doctrine/inflector": "^2.0",
- "ext-json": "*",
- "firebase/php-jwt": "^5.2 || ^6.2",
- "guzzlehttp/guzzle": "^7.0",
- "php": "^7.4 || ^8.0 || ^8.1",
- "psr/http-client": "^1.0",
- "psr/log": "^1.1 || ^2.0 || ^3.0",
- "ramsey/uuid": "^4.1"
- },
- "require-dev": {
- "mikey179/vfsstream": "^1.6",
- "phpunit/phpunit": "^9",
- "squizlabs/php_codesniffer": "^3.6"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Shopify\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Shopify Inc.",
- "email": "dev-tools-education@shopify.com"
- }
- ],
- "description": "Shopify API Library for PHP",
- "keywords": [
- "Storefront API",
- "admin api",
- "app",
- "graphql",
- "jwt",
- "node",
- "rest",
- "shopify",
- "webhook"
- ],
- "support": {
- "issues": "https://github.com/Shopify/shopify-api-php/issues",
- "source": "https://github.com/Shopify/shopify-api-php/tree/v4.3.0"
- },
- "time": "2023-04-12T15:42:26+00:00"
- },
{
"name": "smalot/pdfparser",
"version": "v0.19.0",
@@ -12421,20 +12517,20 @@
},
{
"name": "symfony/css-selector",
- "version": "v6.4.7",
+ "version": "v7.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "1c5d5c2103c3762aff27a27e1e2409e30a79083b"
+ "reference": "843f2f7ac5e4c5bf0ec77daef23ca6d4d8922adc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/1c5d5c2103c3762aff27a27e1e2409e30a79083b",
- "reference": "1c5d5c2103c3762aff27a27e1e2409e30a79083b",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/843f2f7ac5e4c5bf0ec77daef23ca6d4d8922adc",
+ "reference": "843f2f7ac5e4c5bf0ec77daef23ca6d4d8922adc",
"shasum": ""
},
"require": {
- "php": ">=8.1"
+ "php": ">=8.2"
},
"type": "library",
"autoload": {
@@ -12466,7 +12562,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v6.4.7"
+ "source": "https://github.com/symfony/css-selector/tree/v7.1.0"
},
"funding": [
{
@@ -12482,7 +12578,7 @@
"type": "tidelift"
}
],
- "time": "2024-04-18T09:22:46+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -12628,24 +12724,24 @@
},
{
"name": "symfony/event-dispatcher",
- "version": "v6.4.7",
+ "version": "v7.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "d84384f3f67de3cb650db64d685d70395dacfc3f"
+ "reference": "522d2772d6c7bab843b0c52466dc7844622bacc2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d84384f3f67de3cb650db64d685d70395dacfc3f",
- "reference": "d84384f3f67de3cb650db64d685d70395dacfc3f",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/522d2772d6c7bab843b0c52466dc7844622bacc2",
+ "reference": "522d2772d6c7bab843b0c52466dc7844622bacc2",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/event-dispatcher-contracts": "^2.5|^3"
},
"conflict": {
- "symfony/dependency-injection": "<5.4",
+ "symfony/dependency-injection": "<6.4",
"symfony/service-contracts": "<2.5"
},
"provide": {
@@ -12654,13 +12750,13 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.4|^6.0|^7.0",
- "symfony/dependency-injection": "^5.4|^6.0|^7.0",
- "symfony/error-handler": "^5.4|^6.0|^7.0",
- "symfony/expression-language": "^5.4|^6.0|^7.0",
- "symfony/http-foundation": "^5.4|^6.0|^7.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/stopwatch": "^5.4|^6.0|^7.0"
+ "symfony/stopwatch": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -12688,7 +12784,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.7"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.0"
},
"funding": [
{
@@ -12704,7 +12800,7 @@
"type": "tidelift"
}
],
- "time": "2024-04-18T09:22:46+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -13274,25 +13370,28 @@
},
{
"name": "symfony/intl",
- "version": "v6.4.7",
+ "version": "v7.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/intl.git",
- "reference": "9ed7dfeeba5759b61798358100bb63230509b337"
+ "reference": "1b8974c7ff07c61d4acf0e873e34dfb75190b2bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/intl/zipball/9ed7dfeeba5759b61798358100bb63230509b337",
- "reference": "9ed7dfeeba5759b61798358100bb63230509b337",
+ "url": "https://api.github.com/repos/symfony/intl/zipball/1b8974c7ff07c61d4acf0e873e34dfb75190b2bb",
+ "reference": "1b8974c7ff07c61d4acf0e873e34dfb75190b2bb",
"shasum": ""
},
"require": {
- "php": ">=8.1"
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "symfony/string": "<7.1"
},
"require-dev": {
- "symfony/filesystem": "^5.4|^6.0|^7.0",
- "symfony/finder": "^5.4|^6.0|^7.0",
- "symfony/var-exporter": "^5.4|^6.0|^7.0"
+ "symfony/filesystem": "^6.4|^7.0",
+ "symfony/var-exporter": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -13337,7 +13436,7 @@
"localization"
],
"support": {
- "source": "https://github.com/symfony/intl/tree/v6.4.7"
+ "source": "https://github.com/symfony/intl/tree/v7.1.0"
},
"funding": [
{
@@ -13353,7 +13452,7 @@
"type": "tidelift"
}
],
- "time": "2024-04-18T09:22:46+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/mailer",
@@ -13591,20 +13690,20 @@
},
{
"name": "symfony/options-resolver",
- "version": "v6.4.7",
+ "version": "v7.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
- "reference": "9a3c92b490716ba6771f5beced13c6eda7183eed"
+ "reference": "9564f64c16f99e29f252eafc642965e8fcb755ce"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/9a3c92b490716ba6771f5beced13c6eda7183eed",
- "reference": "9a3c92b490716ba6771f5beced13c6eda7183eed",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/9564f64c16f99e29f252eafc642965e8fcb755ce",
+ "reference": "9564f64c16f99e29f252eafc642965e8fcb755ce",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3"
},
"type": "library",
@@ -13638,7 +13737,7 @@
"options"
],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/v6.4.7"
+ "source": "https://github.com/symfony/options-resolver/tree/v7.1.0"
},
"funding": [
{
@@ -13654,7 +13753,7 @@
"type": "tidelift"
}
],
- "time": "2024-04-18T09:22:46+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -14582,6 +14681,166 @@
],
"time": "2024-04-18T09:22:46+00:00"
},
+ {
+ "name": "symfony/property-access",
+ "version": "v7.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/property-access.git",
+ "reference": "1e8c1e6ac1b19cf945d8094a0ee50296872c4cb2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/1e8c1e6ac1b19cf945d8094a0ee50296872c4cb2",
+ "reference": "1e8c1e6ac1b19cf945d8094a0ee50296872c4cb2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/property-info": "^6.4|^7.0"
+ },
+ "require-dev": {
+ "symfony/cache": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\PropertyAccess\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides functions to read and write from/to an object or array using a simple string notation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "access",
+ "array",
+ "extraction",
+ "index",
+ "injection",
+ "object",
+ "property",
+ "property-path",
+ "reflection"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/property-access/tree/v7.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-04-18T09:32:20+00:00"
+ },
+ {
+ "name": "symfony/property-info",
+ "version": "v7.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/property-info.git",
+ "reference": "b10cb8cf0179aec96769df2affb881ecfc293f79"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/b10cb8cf0179aec96769df2affb881ecfc293f79",
+ "reference": "b10cb8cf0179aec96769df2affb881ecfc293f79",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/string": "^6.4|^7.0",
+ "symfony/type-info": "^7.1"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "<5.2",
+ "phpdocumentor/type-resolver": "<1.5.1",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/serializer": "<6.4"
+ },
+ "require-dev": {
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "phpstan/phpdoc-parser": "^1.0",
+ "symfony/cache": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/serializer": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\PropertyInfo\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kévin Dunglas",
+ "email": "dunglas@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Extracts information about PHP class' properties using metadata of popular sources",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "doctrine",
+ "phpdoc",
+ "property",
+ "symfony",
+ "type",
+ "validator"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/property-info/tree/v7.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-30T12:09:55+00:00"
+ },
{
"name": "symfony/psr-http-message-bridge",
"version": "v2.3.1",
@@ -14754,6 +15013,103 @@
],
"time": "2024-04-18T09:22:46+00:00"
},
+ {
+ "name": "symfony/serializer",
+ "version": "v7.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/serializer.git",
+ "reference": "972eb05320d06d07399b71b05e6da9032c865f1d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/972eb05320d06d07399b71b05e6da9032c865f1d",
+ "reference": "972eb05320d06d07399b71b05e6da9032c865f1d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "<3.2.2",
+ "phpdocumentor/type-resolver": "<1.4.0",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/property-access": "<6.4",
+ "symfony/property-info": "<6.4",
+ "symfony/uid": "<6.4",
+ "symfony/validator": "<6.4",
+ "symfony/yaml": "<6.4"
+ },
+ "require-dev": {
+ "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0",
+ "seld/jsonlint": "^1.10",
+ "symfony/cache": "^6.4|^7.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/filesystem": "^6.4|^7.0",
+ "symfony/form": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/messenger": "^6.4|^7.0",
+ "symfony/mime": "^6.4|^7.0",
+ "symfony/property-access": "^6.4|^7.0",
+ "symfony/property-info": "^6.4|^7.0",
+ "symfony/translation-contracts": "^2.5|^3",
+ "symfony/type-info": "^7.1",
+ "symfony/uid": "^6.4|^7.0",
+ "symfony/validator": "^6.4|^7.0",
+ "symfony/var-dumper": "^6.4|^7.0",
+ "symfony/var-exporter": "^6.4|^7.0",
+ "symfony/yaml": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Serializer\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/serializer/tree/v7.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-21T15:59:31+00:00"
+ },
{
"name": "symfony/service-contracts",
"version": "v3.5.0",
@@ -14839,20 +15195,20 @@
},
{
"name": "symfony/string",
- "version": "v6.4.7",
+ "version": "v7.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "ffeb9591c61f65a68d47f77d12b83fa530227a69"
+ "reference": "6f41b185e742737917e6f2e3eca37767fba5f17a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/ffeb9591c61f65a68d47f77d12b83fa530227a69",
- "reference": "ffeb9591c61f65a68d47f77d12b83fa530227a69",
+ "url": "https://api.github.com/repos/symfony/string/zipball/6f41b185e742737917e6f2e3eca37767fba5f17a",
+ "reference": "6f41b185e742737917e6f2e3eca37767fba5f17a",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
@@ -14862,11 +15218,12 @@
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
- "symfony/error-handler": "^5.4|^6.0|^7.0",
- "symfony/http-client": "^5.4|^6.0|^7.0",
- "symfony/intl": "^6.2|^7.0",
+ "symfony/emoji": "^7.1",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/http-client": "^6.4|^7.0",
+ "symfony/intl": "^6.4|^7.0",
"symfony/translation-contracts": "^2.5|^3.0",
- "symfony/var-exporter": "^5.4|^6.0|^7.0"
+ "symfony/var-exporter": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -14905,7 +15262,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v6.4.7"
+ "source": "https://github.com/symfony/string/tree/v7.1.0"
},
"funding": [
{
@@ -14921,7 +15278,7 @@
"type": "tidelift"
}
],
- "time": "2024-04-18T09:22:46+00:00"
+ "time": "2024-05-17T10:55:18+00:00"
},
{
"name": "symfony/translation",
@@ -15096,6 +15453,88 @@
],
"time": "2024-04-18T09:32:20+00:00"
},
+ {
+ "name": "symfony/type-info",
+ "version": "v7.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/type-info.git",
+ "reference": "b429d0710588fc396ba5def5329cf637d9861f9f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/type-info/zipball/b429d0710588fc396ba5def5329cf637d9861f9f",
+ "reference": "b429d0710588fc396ba5def5329cf637d9861f9f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "psr/container": "^1.1|^2.0"
+ },
+ "conflict": {
+ "phpstan/phpdoc-parser": "<1.0",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/property-info": "<6.4"
+ },
+ "require-dev": {
+ "phpstan/phpdoc-parser": "^1.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/property-info": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\TypeInfo\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mathias Arlaud",
+ "email": "mathias.arlaud@gmail.com"
+ },
+ {
+ "name": "Baptiste LEDUC",
+ "email": "baptiste.leduc@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Extracts PHP types information.",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "PHPStan",
+ "phpdoc",
+ "symfony",
+ "type"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/type-info/tree/v7.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-02T10:19:13+00:00"
+ },
{
"name": "symfony/uid",
"version": "v6.4.7",
@@ -15172,20 +15611,20 @@
},
{
"name": "symfony/validator",
- "version": "v6.4.7",
+ "version": "v7.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
- "reference": "4761a08d161d823ec281151ade0905547e0502a7"
+ "reference": "ffcc8c56502f6adaeaf6307aef5b98b53a8d0326"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/validator/zipball/4761a08d161d823ec281151ade0905547e0502a7",
- "reference": "4761a08d161d823ec281151ade0905547e0502a7",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/ffcc8c56502f6adaeaf6307aef5b98b53a8d0326",
+ "reference": "ffcc8c56502f6adaeaf6307aef5b98b53a8d0326",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.0",
@@ -15193,34 +15632,34 @@
"symfony/translation-contracts": "^2.5|^3"
},
"conflict": {
- "doctrine/annotations": "<1.13",
"doctrine/lexer": "<1.1",
- "symfony/dependency-injection": "<5.4",
- "symfony/expression-language": "<5.4",
- "symfony/http-kernel": "<5.4",
- "symfony/intl": "<5.4",
- "symfony/property-info": "<5.4",
- "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3",
- "symfony/yaml": "<5.4"
+ "symfony/dependency-injection": "<6.4",
+ "symfony/doctrine-bridge": "<7.0",
+ "symfony/expression-language": "<6.4",
+ "symfony/http-kernel": "<6.4",
+ "symfony/intl": "<6.4",
+ "symfony/property-info": "<6.4",
+ "symfony/translation": "<6.4.3|>=7.0,<7.0.3",
+ "symfony/yaml": "<6.4"
},
"require-dev": {
- "doctrine/annotations": "^1.13|^2",
"egulias/email-validator": "^2.1.10|^3|^4",
- "symfony/cache": "^5.4|^6.0|^7.0",
- "symfony/config": "^5.4|^6.0|^7.0",
- "symfony/console": "^5.4|^6.0|^7.0",
- "symfony/dependency-injection": "^5.4|^6.0|^7.0",
- "symfony/expression-language": "^5.4|^6.0|^7.0",
- "symfony/finder": "^5.4|^6.0|^7.0",
- "symfony/http-client": "^5.4|^6.0|^7.0",
- "symfony/http-foundation": "^5.4|^6.0|^7.0",
- "symfony/http-kernel": "^5.4|^6.0|^7.0",
- "symfony/intl": "^5.4|^6.0|^7.0",
- "symfony/mime": "^5.4|^6.0|^7.0",
- "symfony/property-access": "^5.4|^6.0|^7.0",
- "symfony/property-info": "^5.4|^6.0|^7.0",
- "symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3",
- "symfony/yaml": "^5.4|^6.0|^7.0"
+ "symfony/cache": "^6.4|^7.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/finder": "^6.4|^7.0",
+ "symfony/http-client": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/intl": "^6.4|^7.0",
+ "symfony/mime": "^6.4|^7.0",
+ "symfony/property-access": "^6.4|^7.0",
+ "symfony/property-info": "^6.4|^7.0",
+ "symfony/translation": "^6.4.3|^7.0.3",
+ "symfony/type-info": "^7.1",
+ "symfony/yaml": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -15248,7 +15687,7 @@
"description": "Provides tools to validate values",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/validator/tree/v6.4.7"
+ "source": "https://github.com/symfony/validator/tree/v7.1.0"
},
"funding": [
{
@@ -15264,7 +15703,7 @@
"type": "tidelift"
}
],
- "time": "2024-04-28T10:38:38+00:00"
+ "time": "2024-05-21T15:59:31+00:00"
},
{
"name": "symfony/var-dumper",
@@ -16017,57 +16456,6 @@
},
"time": "2023-02-08T11:09:34+00:00"
},
- {
- "name": "wepay/php-sdk",
- "version": "0.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/wepay/PHP-SDK.git",
- "reference": "2a89ceb2954d117d082f869d3bfcb7864e6c2a7d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/wepay/PHP-SDK/zipball/2a89ceb2954d117d082f869d3bfcb7864e6c2a7d",
- "reference": "2a89ceb2954d117d082f869d3bfcb7864e6c2a7d",
- "shasum": ""
- },
- "require": {
- "ext-curl": "*",
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "0.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "wepay.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "WePay",
- "email": "api@wepay.com"
- }
- ],
- "description": "WePay APIv2 SDK for PHP",
- "keywords": [
- "payment",
- "sdk",
- "wepay"
- ],
- "support": {
- "issues": "https://github.com/wepay/PHP-SDK/issues",
- "source": "https://github.com/wepay/PHP-SDK/tree/master"
- },
- "time": "2017-01-21T07:03:26+00:00"
- },
{
"name": "wildbit/postmark-php",
"version": "v4.0.5",
@@ -16400,16 +16788,16 @@
},
{
"name": "brianium/paratest",
- "version": "v7.3.1",
+ "version": "v7.4.4",
"source": {
"type": "git",
"url": "https://github.com/paratestphp/paratest.git",
- "reference": "551f46f52a93177d873f3be08a1649ae886b4a30"
+ "reference": "bfe354e71aca261cf37bf70bf47791081100000d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/paratestphp/paratest/zipball/551f46f52a93177d873f3be08a1649ae886b4a30",
- "reference": "551f46f52a93177d873f3be08a1649ae886b4a30",
+ "url": "https://api.github.com/repos/paratestphp/paratest/zipball/bfe354e71aca261cf37bf70bf47791081100000d",
+ "reference": "bfe354e71aca261cf37bf70bf47791081100000d",
"shasum": ""
},
"require": {
@@ -16417,28 +16805,27 @@
"ext-pcre": "*",
"ext-reflection": "*",
"ext-simplexml": "*",
- "fidry/cpu-core-counter": "^0.5.1 || ^1.0.0",
- "jean85/pretty-package-versions": "^2.0.5",
- "php": "~8.1.0 || ~8.2.0 || ~8.3.0",
- "phpunit/php-code-coverage": "^10.1.7",
- "phpunit/php-file-iterator": "^4.1.0",
- "phpunit/php-timer": "^6.0",
- "phpunit/phpunit": "^10.4.2",
- "sebastian/environment": "^6.0.1",
- "symfony/console": "^6.3.4 || ^7.0.0",
- "symfony/process": "^6.3.4 || ^7.0.0"
+ "fidry/cpu-core-counter": "^1.1.0",
+ "jean85/pretty-package-versions": "^2.0.6",
+ "php": "~8.2.0 || ~8.3.0",
+ "phpunit/php-code-coverage": "^10.1.14 || ^11.0.3",
+ "phpunit/php-file-iterator": "^4.1.0 || ^5.0.0",
+ "phpunit/php-timer": "^6.0.0 || ^7.0.0",
+ "phpunit/phpunit": "^10.5.20 || ^11.1.3",
+ "sebastian/environment": "^6.1.0 || ^7.1.0",
+ "symfony/console": "^6.4.7 || ^7.0.7",
+ "symfony/process": "^6.4.7 || ^7.0.7"
},
"require-dev": {
"doctrine/coding-standard": "^12.0.0",
"ext-pcov": "*",
"ext-posix": "*",
- "infection/infection": "^0.27.6",
- "phpstan/phpstan": "^1.10.40",
+ "phpstan/phpstan": "^1.10.67",
"phpstan/phpstan-deprecation-rules": "^1.1.4",
- "phpstan/phpstan-phpunit": "^1.3.15",
- "phpstan/phpstan-strict-rules": "^1.5.2",
- "squizlabs/php_codesniffer": "^3.7.2",
- "symfony/filesystem": "^6.3.1 || ^7.0.0"
+ "phpstan/phpstan-phpunit": "^1.3.16",
+ "phpstan/phpstan-strict-rules": "^1.5.5",
+ "squizlabs/php_codesniffer": "^3.9.2",
+ "symfony/filesystem": "^6.4.3 || ^7.0.7"
},
"bin": [
"bin/paratest",
@@ -16479,7 +16866,7 @@
],
"support": {
"issues": "https://github.com/paratestphp/paratest/issues",
- "source": "https://github.com/paratestphp/paratest/tree/v7.3.1"
+ "source": "https://github.com/paratestphp/paratest/tree/v7.4.4"
},
"funding": [
{
@@ -16491,7 +16878,7 @@
"type": "paypal"
}
],
- "time": "2023-10-31T09:24:17+00:00"
+ "time": "2024-05-03T13:01:49+00:00"
},
{
"name": "clue/ndjson-react",
@@ -16632,16 +17019,16 @@
},
{
"name": "composer/pcre",
- "version": "3.1.3",
+ "version": "3.1.4",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
- "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8"
+ "reference": "04229f163664973f68f38f6f73d917799168ef24"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8",
- "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/04229f163664973f68f38f6f73d917799168ef24",
+ "reference": "04229f163664973f68f38f6f73d917799168ef24",
"shasum": ""
},
"require": {
@@ -16683,7 +17070,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/3.1.3"
+ "source": "https://github.com/composer/pcre/tree/3.1.4"
},
"funding": [
{
@@ -16699,7 +17086,7 @@
"type": "tidelift"
}
],
- "time": "2024-03-19T10:26:25+00:00"
+ "time": "2024-05-27T13:40:54+00:00"
},
{
"name": "composer/semver",
@@ -17029,16 +17416,16 @@
},
{
"name": "friendsofphp/php-cs-fixer",
- "version": "v3.57.2",
+ "version": "v3.58.1",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
- "reference": "22f7f3145606df92b02fb1bd22c30abfce956d3c"
+ "reference": "04e9424025677a86914b9a4944dbbf4060bb0aff"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/22f7f3145606df92b02fb1bd22c30abfce956d3c",
- "reference": "22f7f3145606df92b02fb1bd22c30abfce956d3c",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/04e9424025677a86914b9a4944dbbf4060bb0aff",
+ "reference": "04e9424025677a86914b9a4944dbbf4060bb0aff",
"shasum": ""
},
"require": {
@@ -17117,7 +17504,7 @@
],
"support": {
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
- "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.57.2"
+ "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.58.1"
},
"funding": [
{
@@ -17125,7 +17512,7 @@
"type": "github"
}
],
- "time": "2024-05-20T20:41:57+00:00"
+ "time": "2024-05-29T16:39:07+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@@ -17239,16 +17626,16 @@
},
{
"name": "larastan/larastan",
- "version": "v2.9.6",
+ "version": "v2.9.7",
"source": {
"type": "git",
"url": "https://github.com/larastan/larastan.git",
- "reference": "93d5b95d2e29cdb8203363d44abfdbc0bc7ef57f"
+ "reference": "5c805f636095cc2e0b659e3954775cf8f1dad1bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/larastan/larastan/zipball/93d5b95d2e29cdb8203363d44abfdbc0bc7ef57f",
- "reference": "93d5b95d2e29cdb8203363d44abfdbc0bc7ef57f",
+ "url": "https://api.github.com/repos/larastan/larastan/zipball/5c805f636095cc2e0b659e3954775cf8f1dad1bb",
+ "reference": "5c805f636095cc2e0b659e3954775cf8f1dad1bb",
"shasum": ""
},
"require": {
@@ -17262,7 +17649,7 @@
"illuminate/support": "^9.52.16 || ^10.28.0 || ^11.0",
"php": "^8.0.2",
"phpmyadmin/sql-parser": "^5.9.0",
- "phpstan/phpstan": "^1.10.66"
+ "phpstan/phpstan": "^1.11.1"
},
"require-dev": {
"doctrine/coding-standard": "^12.0",
@@ -17317,7 +17704,7 @@
],
"support": {
"issues": "https://github.com/larastan/larastan/issues",
- "source": "https://github.com/larastan/larastan/tree/v2.9.6"
+ "source": "https://github.com/larastan/larastan/tree/v2.9.7"
},
"funding": [
{
@@ -17337,7 +17724,7 @@
"type": "patreon"
}
],
- "time": "2024-05-09T11:53:26+00:00"
+ "time": "2024-05-27T18:33:26+00:00"
},
{
"name": "maximebf/debugbar",
@@ -19911,16 +20298,16 @@
},
{
"name": "spatie/ignition",
- "version": "1.14.1",
+ "version": "1.14.2",
"source": {
"type": "git",
"url": "https://github.com/spatie/ignition.git",
- "reference": "c23cc018c5f423d2f413b99f84655fceb6549811"
+ "reference": "5e11c11f675bb5251f061491a493e04a1a571532"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/ignition/zipball/c23cc018c5f423d2f413b99f84655fceb6549811",
- "reference": "c23cc018c5f423d2f413b99f84655fceb6549811",
+ "url": "https://api.github.com/repos/spatie/ignition/zipball/5e11c11f675bb5251f061491a493e04a1a571532",
+ "reference": "5e11c11f675bb5251f061491a493e04a1a571532",
"shasum": ""
},
"require": {
@@ -19990,7 +20377,7 @@
"type": "github"
}
],
- "time": "2024-05-03T15:56:16+00:00"
+ "time": "2024-05-29T08:10:20+00:00"
},
{
"name": "spatie/laravel-ignition",
@@ -20224,20 +20611,20 @@
},
{
"name": "symfony/stopwatch",
- "version": "v6.4.7",
+ "version": "v7.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
- "reference": "ffec95ba269e541eb2232126c0c20f83086b5c68"
+ "reference": "13c750a45ac43c45f45d944d22499768aa1b72d8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/ffec95ba269e541eb2232126c0c20f83086b5c68",
- "reference": "ffec95ba269e541eb2232126c0c20f83086b5c68",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/13c750a45ac43c45f45d944d22499768aa1b72d8",
+ "reference": "13c750a45ac43c45f45d944d22499768aa1b72d8",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/service-contracts": "^2.5|^3"
},
"type": "library",
@@ -20266,7 +20653,7 @@
"description": "Provides a way to profile code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/stopwatch/tree/v6.4.7"
+ "source": "https://github.com/symfony/stopwatch/tree/v7.1.0"
},
"funding": [
{
@@ -20282,7 +20669,7 @@
"type": "tidelift"
}
],
- "time": "2024-04-18T09:22:46+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "theseer/tokenizer",
@@ -20339,18 +20726,20 @@
"minimum-stability": "dev",
"stability-flags": {
"socialiteproviders/apple": 20,
- "webpatser/laravel-countries": 20
+ "webpatser/laravel-countries": 20,
+ "invoiceninja/einvoice": 20,
+ "horstoeko/orderx": 20
},
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
- "php": "^8.1|^8.2",
+ "php": "^8.2",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*"
},
"platform-dev": {
- "php": "^8.1|^8.2"
+ "php": "^8.2"
},
- "plugin-api-version": "2.3.0"
+ "plugin-api-version": "2.6.0"
}
diff --git a/config/ninja.php b/config/ninja.php
index 1543dfb44c9f..0d4f30250d7c 100644
--- a/config/ninja.php
+++ b/config/ninja.php
@@ -54,17 +54,14 @@ return [
'hosted' => env('TERMS_OF_SERVICE_URL', 'https://www.invoiceninja.com/terms/'),
'selfhost' => env('TERMS_OF_SERVICE_URL', 'https://www.invoiceninja.com/self-hosting-terms-service/'),
],
-
'privacy_policy_url' => [
'hosted' => env('PRIVACY_POLICY_URL', 'https://www.invoiceninja.com/privacy-policy/'),
'selfhost' => env('PRIVACY_POLICY_URL', 'https://www.invoiceninja.com/self-hosting-privacy-data-control/'),
],
-
'db' => [
'multi_db_enabled' => env('MULTI_DB_ENABLED', false),
'default' => env('DB_CONNECTION', 'mysql'),
],
-
'i18n' => [
'timezone_id' => env('DEFAULT_TIMEZONE', 1),
'country_id' => env('DEFAULT_COUNTRY', 840), // United Stated
@@ -79,7 +76,6 @@ return [
'first_day_of_week' => env('FIRST_DATE_OF_WEEK', 0),
'first_month_of_year' => env('FIRST_MONTH_OF_YEAR', '2000-01-01'),
],
-
'testvars' => [
'username' => 'user@example.com',
'clientname' => 'client@example.com',
diff --git a/database/factories/ClientFactory.php b/database/factories/ClientFactory.php
index 3b0463502f76..f979c8d7d30e 100644
--- a/database/factories/ClientFactory.php
+++ b/database/factories/ClientFactory.php
@@ -13,6 +13,7 @@ namespace Database\Factories;
use App\DataMapper\ClientSettings;
use Illuminate\Database\Eloquent\Factories\Factory;
+use Str;
class ClientFactory extends Factory
{
@@ -49,6 +50,7 @@ class ClientFactory extends Factory
'shipping_country_id' => 4,
'settings' => ClientSettings::defaults(),
'client_hash' => \Illuminate\Support\Str::random(40),
+ 'routing_id' => rand(100000,200000),
];
}
}
diff --git a/database/migrations/2024_05_26_210407_2024_05_28_kwd_precision.php b/database/migrations/2024_05_26_210407_2024_05_28_kwd_precision.php
new file mode 100644
index 000000000000..779abac80f41
--- /dev/null
+++ b/database/migrations/2024_05_26_210407_2024_05_28_kwd_precision.php
@@ -0,0 +1,28 @@
+precision = 3;
+ $currency->save();
+ }
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ //
+ }
+};
diff --git a/database/seeders/CurrenciesSeeder.php b/database/seeders/CurrenciesSeeder.php
index 1c69e5771e7b..90c900835bdc 100644
--- a/database/seeders/CurrenciesSeeder.php
+++ b/database/seeders/CurrenciesSeeder.php
@@ -111,7 +111,7 @@ class CurrenciesSeeder extends Seeder
['id' => 86, 'name' => 'CFP Franc', 'code' => 'XPF', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'], // precision should be zero
['id' => 87, 'name' => 'Mauritian Rupee', 'code' => 'MUR', 'symbol' => 'Rs', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 88, 'name' => 'Cape Verdean Escudo', 'code' => 'CVE', 'symbol' => '', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => '$'],
- ['id' => 89, 'name' => 'Kuwaiti Dinar', 'code' => 'KWD', 'symbol' => 'KD', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
+ ['id' => 89, 'name' => 'Kuwaiti Dinar', 'code' => 'KWD', 'symbol' => 'KD', 'precision' => '3', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 90, 'name' => 'Algerian Dinar', 'code' => 'DZD', 'symbol' => 'DA', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 91, 'name' => 'Macedonian Denar', 'code' => 'MKD', 'symbol' => 'ден', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
['id' => 92, 'name' => 'Fijian Dollar', 'code' => 'FJD', 'symbol' => 'FJ$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
diff --git a/lang/en/texts.php b/lang/en/texts.php
index dea5124960d6..003509f2c939 100644
--- a/lang/en/texts.php
+++ b/lang/en/texts.php
@@ -199,7 +199,7 @@ $lang = array(
'removed_logo' => 'Successfully removed logo',
'sent_message' => 'Successfully sent message',
'invoice_error' => 'Please make sure to select a client and correct any errors',
- 'limit_clients' => 'You\'ve hit the :count client limit on Free accounts. Congrats on your success!.',
+ 'limit_clients' => 'You\'ve hit the :count client limit on Free accounts. Congrats on your success!',
'payment_error' => 'There was an error processing your payment. Please try again later.',
'registration_required' => 'Registration Required',
'confirmation_required' => 'Please confirm your email address, :link to resend the confirmation email.',
@@ -5147,7 +5147,7 @@ $lang = array(
'payment_refund_receipt' => 'Payment Refund Receipt # :number',
'payment_receipt' => 'Payment Receipt # :number',
'load_template_description' => 'The template will be applied to following:',
- 'run_template' => 'Run template',
+ 'run_template' => 'Run Template',
'statement_design' => 'Statement Design',
'delivery_note_design' => 'Delivery Note Design',
'payment_receipt_design' => 'Payment Receipt Design',
@@ -5306,18 +5306,20 @@ $lang = array(
'activity_140' => 'Statement sent to :client',
'invoice_net_amount' => 'Invoice Net Amount',
'round_to_minutes' => 'Round To Minutes',
+ '1_second' => '1 Second',
'1_minute' => '1 Minute',
'5_minutes' => '5 Minutes',
'15_minutes' => '15 Minutes',
'30_minutes' => '30 Minutes',
'1_hour' => '1 Hour',
'1_day' => '1 Day',
- 'round_tasks' => 'Round Tasks',
- 'round_tasks_help' => 'Round time intervals when saving tasks',
+ 'round_tasks' => 'Task Rounding Direction',
+ 'round_tasks_help' => 'Round task times up or down.',
'direction' => 'Direction',
'round_up' => 'Round Up',
'round_down' => 'Round Down',
'task_round_to_nearest' => 'Round To Nearest',
+ 'task_round_to_nearest_help' => 'The interval to round the task to.',
'bulk_updated' => 'Successfully updated data',
'bulk_update' => 'Bulk Update',
'calculate' => 'Calculate',
@@ -5330,6 +5332,8 @@ $lang = array(
'e_invoice_settings' => 'E-Invoice Settings',
'btcpay_refund_subject' => 'Refund of your invoice via BTCPay',
'btcpay_refund_body' => 'A refund intended for you has been issued. To claim it via BTCPay, please click on this link:',
+ 'currency_mauritanian_ouguiya' => 'Mauritanian Ouguiya',
+ 'currency_bhutan_ngultrum' => 'Bhutan Ngultrum',
);
return $lang;
\ No newline at end of file
diff --git a/lang/fr_CA/texts.php b/lang/fr_CA/texts.php
index 49df693e0a54..8a7abbb0fbea 100644
--- a/lang/fr_CA/texts.php
+++ b/lang/fr_CA/texts.php
@@ -5322,6 +5322,12 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'money' => 'Argent',
'web_app' => 'App web',
'desktop_app' => 'App de bureau',
+ 'disconnected' => 'Déconnecté',
+ 'reconnect' => 'Reconnecté',
+ 'e_invoice_settings' => 'Paramètres E-Facture',
+ 'currency_mauritanian_ouguiya' => 'Ouguiya mauritanien',
+ 'currency_bhutan_ngultrum' => 'Ngultrum Bhoutan',
+
);
return $lang;
diff --git a/package-lock.json b/package-lock.json
index 1e4593041b24..3c873758a1f7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,14 +1,10 @@
{
- "name": "invoiceninja",
+ "name": "@invoiceninja/invoiceninja",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"dependencies": {
- "@tailwindcss/forms": "^0.3.4",
- "@tailwindcss/line-clamp": "^0.3.1",
- "@tailwindcss/typography": "^0.4.1",
- "autoprefixer": "^10.3.7",
"axios": "^0.25",
"card-js": "^1.0.13",
"card-validator": "^8.1.1",
@@ -19,24 +15,40 @@
"laravel-mix": "^6.0.34",
"linkify-urls": "^4.0.0",
"lodash": "^4.17.21",
- "postcss": "^8.3.11",
"resolve-url-loader": "^4.0.0",
"sass": "^1.43.4",
- "sass-loader": "^12.3.0",
- "tailwindcss": "^2.2.17"
+ "sass-loader": "^12.3.0"
},
"devDependencies": {
"@babel/compat-data": "7.15.0",
"@babel/plugin-proposal-class-properties": "^7.14.5",
"@tailwindcss/aspect-ratio": "^0.4.2",
+ "@tailwindcss/forms": "^0.5.7",
+ "@tailwindcss/line-clamp": "^0.4.4",
+ "@tailwindcss/typography": "^0.5.10",
+ "autoprefixer": "^10.4.18",
"cypress": "^12.5.1",
"laravel-mix-purgecss": "^6.0.0",
"laravel-vite-plugin": "^0.8.0",
+ "postcss": "^8.4.35",
+ "tailwindcss": "^3.4.1",
"vite": "^4.4.9",
"vite-plugin-static-copy": "^0.17.0",
"vue-template-compiler": "^2.6.14"
}
},
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@ampproject/remapping": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
@@ -2010,6 +2022,102 @@
"purgecss": "^3.1.3"
}
},
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
@@ -2031,9 +2139,9 @@
}
},
"node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
"engines": {
"node": ">=6.0.0"
}
@@ -2066,12 +2174,12 @@
"integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.17",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
- "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
"dependencies": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
}
},
"node_modules/@leichtgewicht/ip-codec": {
@@ -2111,6 +2219,16 @@
"node": ">= 8"
}
},
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/@tailwindcss/aspect-ratio": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz",
@@ -2121,36 +2239,52 @@
}
},
"node_modules/@tailwindcss/forms": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.3.4.tgz",
- "integrity": "sha512-vlAoBifNJUkagB+PAdW4aHMe4pKmSLroH398UPgIogBFc91D2VlHUxe4pjxQhiJl0Nfw53sHSJSQBSTQBZP3vA==",
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.7.tgz",
+ "integrity": "sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==",
+ "dev": true,
"dependencies": {
"mini-svg-data-uri": "^1.2.3"
},
"peerDependencies": {
- "tailwindcss": ">=2.0.0"
+ "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1"
}
},
"node_modules/@tailwindcss/line-clamp": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.3.1.tgz",
- "integrity": "sha512-pNr0T8LAc3TUx/gxCfQZRe9NB2dPEo/cedPHzUGIPxqDMhgjwNm6jYxww4W5l0zAsAddxr+XfZcqttGiFDgrGg==",
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.4.4.tgz",
+ "integrity": "sha512-5U6SY5z8N42VtrCrKlsTAA35gy2VSyYtHWCsg1H87NU1SXnEfekTVlrga9fzUDrrHcGi2Lb5KenUWb4lRQT5/g==",
+ "dev": true,
"peerDependencies": {
"tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1"
}
},
"node_modules/@tailwindcss/typography": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.4.1.tgz",
- "integrity": "sha512-ovPPLUhs7zAIJfr0y1dbGlyCuPhpuv/jpBoFgqAc658DWGGrOBWBMpAWLw2KlzbNeVk4YBJMzue1ekvIbdw6XA==",
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.10.tgz",
+ "integrity": "sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==",
+ "dev": true,
"dependencies": {
"lodash.castarray": "^4.4.0",
"lodash.isplainobject": "^4.0.6",
"lodash.merge": "^4.6.2",
- "lodash.uniq": "^4.5.0"
+ "postcss-selector-parser": "6.0.10"
},
"peerDependencies": {
- "tailwindcss": ">=2.0.0"
+ "tailwindcss": ">=3.0.0 || insiders"
+ }
+ },
+ "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": {
+ "version": "6.0.10",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
+ "dev": true,
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/@trysound/sax": {
@@ -2629,35 +2763,6 @@
"node": ">= 0.6"
}
},
- "node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-node": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
- "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
- "dependencies": {
- "acorn": "^7.0.0",
- "acorn-walk": "^7.0.0",
- "xtend": "^4.0.2"
- }
- },
- "node_modules/acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/adjust-sourcemap-loader": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz",
@@ -2808,6 +2913,12 @@
"node": ">=4"
}
},
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "dev": true
+ },
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
@@ -2843,7 +2954,8 @@
"node_modules/arg": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
- "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "dev": true
},
"node_modules/array-flatten": {
"version": "2.1.2",
@@ -2945,9 +3057,9 @@
}
},
"node_modules/autoprefixer": {
- "version": "10.4.14",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
- "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
+ "version": "10.4.18",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz",
+ "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==",
"funding": [
{
"type": "opencollective",
@@ -2956,12 +3068,16 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
- "browserslist": "^4.21.5",
- "caniuse-lite": "^1.0.30001464",
- "fraction.js": "^4.2.0",
+ "browserslist": "^4.23.0",
+ "caniuse-lite": "^1.0.30001591",
+ "fraction.js": "^4.3.7",
"normalize-range": "^0.1.2",
"picocolors": "^1.0.0",
"postcss-value-parser": "^4.2.0"
@@ -3304,9 +3420,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
+ "version": "4.23.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
+ "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
"funding": [
{
"type": "opencollective",
@@ -3315,13 +3431,17 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
+ "caniuse-lite": "^1.0.30001587",
+ "electron-to-chromium": "^1.4.668",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
},
"bin": {
"browserslist": "cli.js"
@@ -3428,6 +3548,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
+ "dev": true,
"engines": {
"node": ">= 6"
}
@@ -3444,9 +3565,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001469",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001469.tgz",
- "integrity": "sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g==",
+ "version": "1.0.30001593",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz",
+ "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==",
"funding": [
{
"type": "opencollective",
@@ -3455,6 +3576,10 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
]
},
@@ -3668,18 +3793,6 @@
"resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.34.3.tgz",
"integrity": "sha512-aFr67xDazPwthsGm729mnClgNuh15JEagU6McKBKqxuHOkWL7vMFzGbhsXDdPZ+H6ia5QKIMGYuGOMENBHnVpg=="
},
- "node_modules/color": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
- "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
- "dependencies": {
- "color-convert": "^2.0.1",
- "color-string": "^1.9.0"
- },
- "engines": {
- "node": ">=12.5.0"
- }
- },
"node_modules/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -3693,31 +3806,6 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
},
- "node_modules/color-string": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
- "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
- "dependencies": {
- "color-name": "^1.0.0",
- "simple-swizzle": "^0.2.2"
- }
- },
- "node_modules/color/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
"node_modules/colord": {
"version": "2.9.3",
"resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
@@ -4053,14 +4141,6 @@
"node": "*"
}
},
- "node_modules/css-color-names": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
- "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==",
- "engines": {
- "node": "*"
- }
- },
"node_modules/css-declaration-sorter": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz",
@@ -4187,11 +4267,6 @@
"node": ">=8.0.0"
}
},
- "node_modules/css-unit-converter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz",
- "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA=="
- },
"node_modules/css-what": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
@@ -4573,14 +4648,6 @@
"node": ">=8"
}
},
- "node_modules/defined": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
- "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -4626,26 +4693,11 @@
"resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
"integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
},
- "node_modules/detective": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
- "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
- "dependencies": {
- "acorn-node": "^1.8.2",
- "defined": "^1.0.0",
- "minimist": "^1.2.6"
- },
- "bin": {
- "detective": "bin/detective.js"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/didyoumean": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
- "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
+ "dev": true
},
"node_modules/diffie-hellman": {
"version": "5.0.3",
@@ -4676,7 +4728,8 @@
"node_modules/dlv": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
- "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "dev": true
},
"node_modules/dns-equal": {
"version": "1.0.0",
@@ -4804,6 +4857,12 @@
"resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
"integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA=="
},
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
"node_modules/ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -4820,9 +4879,9 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/electron-to-chromium": {
- "version": "1.4.338",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.338.tgz",
- "integrity": "sha512-Kfq90LFsNtGOwCZJ77XQa2fSuGQVlEBIGqiccfXxkoYTe5o79dE/9GMXR2R9OWjKGFfRVX4GHYxeCUyA8mRJlw=="
+ "version": "1.4.690",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.690.tgz",
+ "integrity": "sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA=="
},
"node_modules/elliptic": {
"version": "6.5.4",
@@ -5230,9 +5289,9 @@
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"node_modules/fast-glob": {
- "version": "3.2.12",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
- "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
@@ -5432,6 +5491,34 @@
}
}
},
+ "node_modules/foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -5464,15 +5551,15 @@
}
},
"node_modules/fraction.js": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
- "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
"engines": {
"node": "*"
},
"funding": {
"type": "patreon",
- "url": "https://www.patreon.com/infusion"
+ "url": "https://github.com/sponsors/rawify"
}
},
"node_modules/fresh": {
@@ -5522,9 +5609,12 @@
}
},
"node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/gensync": {
"version": "1.0.0-beta.2",
@@ -5757,6 +5847,17 @@
"minimalistic-assert": "^1.0.1"
}
},
+ "node_modules/hasown": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz",
+ "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -5765,11 +5866,6 @@
"he": "bin/he"
}
},
- "node_modules/hex-color-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
- "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ=="
- },
"node_modules/hmac-drbg": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
@@ -5791,16 +5887,6 @@
"wbuf": "^1.1.0"
}
},
- "node_modules/hsl-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
- "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A=="
- },
- "node_modules/hsla-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz",
- "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA=="
- },
"node_modules/html-entities": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz",
@@ -6238,25 +6324,12 @@
"is-ci": "bin.js"
}
},
- "node_modules/is-color-stop": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz",
- "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==",
- "dependencies": {
- "css-color-names": "^0.0.4",
- "hex-color-regex": "^1.1.0",
- "hsl-regex": "^1.0.0",
- "hsla-regex": "^1.0.0",
- "rgb-regex": "^1.0.1",
- "rgba-regex": "^1.0.0"
- }
- },
"node_modules/is-core-module": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
- "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
"dependencies": {
- "has": "^1.0.3"
+ "hasown": "^2.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -6422,6 +6495,24 @@
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
"dev": true
},
+ "node_modules/jackspeak": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/jest-worker": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
@@ -6457,6 +6548,15 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
+ "node_modules/jiti": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
+ "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
+ "dev": true,
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -6904,7 +7004,8 @@
"node_modules/lodash.castarray": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
- "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q=="
+ "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
+ "dev": true
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
@@ -6914,7 +7015,8 @@
"node_modules/lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "dev": true
},
"node_modules/lodash.memoize": {
"version": "4.1.2",
@@ -6924,7 +7026,8 @@
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
},
"node_modules/lodash.once": {
"version": "4.1.1",
@@ -6932,11 +7035,6 @@
"integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
"dev": true
},
- "node_modules/lodash.topath": {
- "version": "4.5.2",
- "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz",
- "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg=="
- },
"node_modules/lodash.uniq": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
@@ -7318,6 +7416,7 @@
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",
"integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==",
+ "dev": true,
"bin": {
"mini-svg-data-uri": "cli.js"
}
@@ -7351,15 +7450,13 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/modern-normalize": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz",
- "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==",
+ "node_modules/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
"engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=16 || 14 >=14.17"
}
},
"node_modules/ms": {
@@ -7379,10 +7476,21 @@
"multicast-dns": "cli.js"
}
},
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
"node_modules/nanoid": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
- "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
"funding": [
{
"type": "github",
@@ -7418,14 +7526,6 @@
"tslib": "^2.0.3"
}
},
- "node_modules/node-emoji": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
- "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==",
- "dependencies": {
- "lodash": "^4.17.21"
- }
- },
"node_modules/node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
@@ -7518,9 +7618,9 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/node-releases": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
- "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w=="
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
},
"node_modules/normalize-path": {
"version": "3.0.0",
@@ -7580,9 +7680,10 @@
}
},
"node_modules/object-hash": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz",
- "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "dev": true,
"engines": {
"node": ">= 6"
}
@@ -7844,6 +7945,31 @@
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
+ "node_modules/path-scurry": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
+ "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^9.1.1 || ^10.0.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
+ "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
+ "dev": true,
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
"node_modules/path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
@@ -7909,6 +8035,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/pkg-dir": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
@@ -7921,9 +8056,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.29",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz",
- "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==",
+ "version": "8.4.35",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
+ "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
"funding": [
{
"type": "opencollective",
@@ -7939,7 +8074,7 @@
}
],
"dependencies": {
- "nanoid": "^3.3.6",
+ "nanoid": "^3.3.7",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
},
@@ -8035,20 +8170,40 @@
"postcss": "^8.2.15"
}
},
- "node_modules/postcss-js": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz",
- "integrity": "sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==",
+ "node_modules/postcss-import": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
+ "dev": true,
"dependencies": {
- "camelcase-css": "^2.0.1",
- "postcss": "^8.1.6"
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
},
"engines": {
- "node": ">=10.0"
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-js": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
+ "dev": true,
+ "dependencies": {
+ "camelcase-css": "^2.0.1"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >= 16"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.21"
}
},
"node_modules/postcss-load-config": {
@@ -8278,11 +8433,12 @@
}
},
"node_modules/postcss-nested": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz",
- "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
+ "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
+ "dev": true,
"dependencies": {
- "postcss-selector-parser": "^6.0.6"
+ "postcss-selector-parser": "^6.0.11"
},
"engines": {
"node": ">=12.0"
@@ -8534,14 +8690,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/pretty-hrtime": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
- "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/pretty-time": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz",
@@ -8703,17 +8851,6 @@
}
]
},
- "node_modules/quick-lru": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
- "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -8753,6 +8890,15 @@
"node": ">= 0.8"
}
},
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
"node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
@@ -8802,20 +8948,6 @@
"node": ">= 0.10"
}
},
- "node_modules/reduce-css-calc": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz",
- "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==",
- "dependencies": {
- "css-unit-converter": "^1.1.1",
- "postcss-value-parser": "^3.3.0"
- }
- },
- "node_modules/reduce-css-calc/node_modules/postcss-value-parser": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
- "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ=="
- },
"node_modules/regenerate": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@@ -8932,11 +9064,11 @@
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
},
"node_modules/resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
"dependencies": {
- "is-core-module": "^2.9.0",
+ "is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
@@ -9058,16 +9190,6 @@
"integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
"dev": true
},
- "node_modules/rgb-regex": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
- "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w=="
- },
- "node_modules/rgba-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz",
- "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg=="
- },
"node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -9477,19 +9599,6 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
- "node_modules/simple-swizzle": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
- "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
- "dependencies": {
- "is-arrayish": "^0.3.1"
- }
- },
- "node_modules/simple-swizzle/node_modules/is-arrayish": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
- "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
- },
"node_modules/slash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
@@ -9712,6 +9821,21 @@
"node": ">=8"
}
},
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/stringify-attributes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/stringify-attributes/-/stringify-attributes-3.0.0.tgz",
@@ -9748,6 +9872,19 @@
"node": ">=8"
}
},
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
@@ -9807,6 +9944,97 @@
"postcss": "^8.2.15"
}
},
+ "node_modules/sucrase": {
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "^10.3.10",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/sucrase/node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/sucrase/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/sucrase/node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/sucrase/node_modules/glob": {
+ "version": "10.3.10",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
+ "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.5",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sucrase/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -9858,125 +10086,47 @@
}
},
"node_modules/tailwindcss": {
- "version": "2.2.19",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-2.2.19.tgz",
- "integrity": "sha512-6Ui7JSVtXadtTUo2NtkBBacobzWiQYVjYW0ZnKaP9S1ZCKQ0w7KVNz+YSDI/j7O7KCMHbOkz94ZMQhbT9pOqjw==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
+ "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==",
+ "dev": true,
"dependencies": {
- "arg": "^5.0.1",
- "bytes": "^3.0.0",
- "chalk": "^4.1.2",
- "chokidar": "^3.5.2",
- "color": "^4.0.1",
- "cosmiconfig": "^7.0.1",
- "detective": "^5.2.0",
+ "@alloc/quick-lru": "^5.2.0",
+ "arg": "^5.0.2",
+ "chokidar": "^3.5.3",
"didyoumean": "^1.2.2",
"dlv": "^1.1.3",
- "fast-glob": "^3.2.7",
- "fs-extra": "^10.0.0",
- "glob-parent": "^6.0.1",
- "html-tags": "^3.1.0",
- "is-color-stop": "^1.1.0",
- "is-glob": "^4.0.1",
- "lodash": "^4.17.21",
- "lodash.topath": "^4.5.2",
- "modern-normalize": "^1.1.0",
- "node-emoji": "^1.11.0",
+ "fast-glob": "^3.3.0",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.19.1",
+ "lilconfig": "^2.1.0",
+ "micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
- "object-hash": "^2.2.0",
- "postcss-js": "^3.0.3",
- "postcss-load-config": "^3.1.0",
- "postcss-nested": "5.0.6",
- "postcss-selector-parser": "^6.0.6",
- "postcss-value-parser": "^4.1.0",
- "pretty-hrtime": "^1.0.3",
- "purgecss": "^4.0.3",
- "quick-lru": "^5.1.1",
- "reduce-css-calc": "^2.1.8",
- "resolve": "^1.20.0",
- "tmp": "^0.2.1"
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.23",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.1",
+ "postcss-nested": "^6.0.1",
+ "postcss-selector-parser": "^6.0.11",
+ "resolve": "^1.22.2",
+ "sucrase": "^3.32.0"
},
"bin": {
"tailwind": "lib/cli.js",
"tailwindcss": "lib/cli.js"
},
"engines": {
- "node": ">=12.13.0"
- },
- "peerDependencies": {
- "autoprefixer": "^10.0.2",
- "postcss": "^8.0.9"
- }
- },
- "node_modules/tailwindcss/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/tailwindcss/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/tailwindcss/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/tailwindcss/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/tailwindcss/node_modules/commander": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
- "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/tailwindcss/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
+ "node": ">=14.0.0"
}
},
"node_modules/tailwindcss/node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
"dependencies": {
"is-glob": "^4.0.3"
},
@@ -9984,37 +10134,63 @@
"node": ">=10.13.0"
}
},
- "node_modules/tailwindcss/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "node_modules/tailwindcss/node_modules/postcss-load-config": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
"engines": {
- "node": ">=8"
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
}
},
- "node_modules/tailwindcss/node_modules/purgecss": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-4.1.3.tgz",
- "integrity": "sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==",
- "dependencies": {
- "commander": "^8.0.0",
- "glob": "^7.1.7",
- "postcss": "^8.3.5",
- "postcss-selector-parser": "^6.0.6"
+ "node_modules/tailwindcss/node_modules/postcss-load-config/node_modules/lilconfig": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz",
+ "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
},
+ "funding": {
+ "url": "https://github.com/sponsors/antonk52"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/yaml": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.0.tgz",
+ "integrity": "sha512-j9iR8g+/t0lArF4V6NE/QCfT+CO7iLqrXAHZbJdo+LfjqP1vR8Fg5bSiaq6Q2lOD1AUEVrEVIgABvBFYojJVYQ==",
+ "dev": true,
"bin": {
- "purgecss": "bin/purgecss.js"
- }
- },
- "node_modules/tailwindcss/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
+ "yaml": "bin.mjs"
},
"engines": {
- "node": ">=8"
+ "node": ">= 14"
}
},
"node_modules/tapable": {
@@ -10108,6 +10284,27 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
},
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dev": true,
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
"node_modules/throttleit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
@@ -10145,6 +10342,7 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
"integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+ "dev": true,
"dependencies": {
"rimraf": "^3.0.0"
},
@@ -10206,6 +10404,12 @@
"node": ">=6"
}
},
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
+ "dev": true
+ },
"node_modules/tslib": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
@@ -10319,9 +10523,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
- "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
"funding": [
{
"type": "opencollective",
@@ -10330,6 +10534,10 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
@@ -10337,7 +10545,7 @@
"picocolors": "^1.0.0"
},
"bin": {
- "browserslist-lint": "cli.js"
+ "update-browserslist-db": "cli.js"
},
"peerDependencies": {
"browserslist": ">= 4.21.0"
@@ -11100,6 +11308,57 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
"node_modules/wrap-ansi/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -11221,6 +11480,12 @@
}
},
"dependencies": {
+ "@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "dev": true
+ },
"@ampproject/remapping": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
@@ -12492,6 +12757,71 @@
"purgecss": "^3.1.3"
}
},
+ "@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "requires": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^6.0.1"
+ }
+ },
+ "wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ }
+ }
+ }
+ },
"@jridgewell/gen-mapping": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
@@ -12507,9 +12837,9 @@
"integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
},
"@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="
},
"@jridgewell/source-map": {
"version": "0.3.2",
@@ -12538,12 +12868,12 @@
"integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
},
"@jridgewell/trace-mapping": {
- "version": "0.3.17",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
- "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
"requires": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
}
},
"@leichtgewicht/ip-codec": {
@@ -12574,6 +12904,13 @@
"fastq": "^1.6.0"
}
},
+ "@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true
+ },
"@tailwindcss/aspect-ratio": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz",
@@ -12582,28 +12919,43 @@
"requires": {}
},
"@tailwindcss/forms": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.3.4.tgz",
- "integrity": "sha512-vlAoBifNJUkagB+PAdW4aHMe4pKmSLroH398UPgIogBFc91D2VlHUxe4pjxQhiJl0Nfw53sHSJSQBSTQBZP3vA==",
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.7.tgz",
+ "integrity": "sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==",
+ "dev": true,
"requires": {
"mini-svg-data-uri": "^1.2.3"
}
},
"@tailwindcss/line-clamp": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.3.1.tgz",
- "integrity": "sha512-pNr0T8LAc3TUx/gxCfQZRe9NB2dPEo/cedPHzUGIPxqDMhgjwNm6jYxww4W5l0zAsAddxr+XfZcqttGiFDgrGg==",
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.4.4.tgz",
+ "integrity": "sha512-5U6SY5z8N42VtrCrKlsTAA35gy2VSyYtHWCsg1H87NU1SXnEfekTVlrga9fzUDrrHcGi2Lb5KenUWb4lRQT5/g==",
+ "dev": true,
"requires": {}
},
"@tailwindcss/typography": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.4.1.tgz",
- "integrity": "sha512-ovPPLUhs7zAIJfr0y1dbGlyCuPhpuv/jpBoFgqAc658DWGGrOBWBMpAWLw2KlzbNeVk4YBJMzue1ekvIbdw6XA==",
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.10.tgz",
+ "integrity": "sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==",
+ "dev": true,
"requires": {
"lodash.castarray": "^4.4.0",
"lodash.isplainobject": "^4.0.6",
"lodash.merge": "^4.6.2",
- "lodash.uniq": "^4.5.0"
+ "postcss-selector-parser": "6.0.10"
+ },
+ "dependencies": {
+ "postcss-selector-parser": {
+ "version": "6.0.10",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
+ "dev": true,
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ }
}
},
"@trysound/sax": {
@@ -13063,26 +13415,6 @@
"negotiator": "0.6.3"
}
},
- "acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
- },
- "acorn-node": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
- "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
- "requires": {
- "acorn": "^7.0.0",
- "acorn-walk": "^7.0.0",
- "xtend": "^4.0.2"
- }
- },
- "acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA=="
- },
"adjust-sourcemap-loader": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz",
@@ -13186,6 +13518,12 @@
"color-convert": "^1.9.0"
}
},
+ "any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "dev": true
+ },
"anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
@@ -13204,7 +13542,8 @@
"arg": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
- "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "dev": true
},
"array-flatten": {
"version": "2.1.2",
@@ -13298,13 +13637,13 @@
"dev": true
},
"autoprefixer": {
- "version": "10.4.14",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
- "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
+ "version": "10.4.18",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz",
+ "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==",
"requires": {
- "browserslist": "^4.21.5",
- "caniuse-lite": "^1.0.30001464",
- "fraction.js": "^4.2.0",
+ "browserslist": "^4.23.0",
+ "caniuse-lite": "^1.0.30001591",
+ "fraction.js": "^4.3.7",
"normalize-range": "^0.1.2",
"picocolors": "^1.0.0",
"postcss-value-parser": "^4.2.0"
@@ -13586,14 +13925,14 @@
}
},
"browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
+ "version": "4.23.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
+ "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
"requires": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
+ "caniuse-lite": "^1.0.30001587",
+ "electron-to-chromium": "^1.4.668",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
}
},
"buffer": {
@@ -13664,7 +14003,8 @@
"camelcase-css": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
- "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
+ "dev": true
},
"caniuse-api": {
"version": "3.0.0",
@@ -13678,9 +14018,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30001469",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001469.tgz",
- "integrity": "sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g=="
+ "version": "1.0.30001593",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz",
+ "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ=="
},
"card-js": {
"version": "1.0.13",
@@ -13834,30 +14174,6 @@
"resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.34.3.tgz",
"integrity": "sha512-aFr67xDazPwthsGm729mnClgNuh15JEagU6McKBKqxuHOkWL7vMFzGbhsXDdPZ+H6ia5QKIMGYuGOMENBHnVpg=="
},
- "color": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
- "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
- "requires": {
- "color-convert": "^2.0.1",
- "color-string": "^1.9.0"
- },
- "dependencies": {
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- }
- }
- },
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -13871,15 +14187,6 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
},
- "color-string": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
- "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
- "requires": {
- "color-name": "^1.0.0",
- "simple-swizzle": "^0.2.2"
- }
- },
"colord": {
"version": "2.9.3",
"resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
@@ -14154,11 +14461,6 @@
"randomfill": "^1.0.3"
}
},
- "css-color-names": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
- "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q=="
- },
"css-declaration-sorter": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz",
@@ -14246,11 +14548,6 @@
"source-map": "^0.6.1"
}
},
- "css-unit-converter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz",
- "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA=="
- },
"css-what": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
@@ -14527,11 +14824,6 @@
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
"integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="
},
- "defined": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
- "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q=="
- },
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -14567,20 +14859,11 @@
"resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
"integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
},
- "detective": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
- "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
- "requires": {
- "acorn-node": "^1.8.2",
- "defined": "^1.0.0",
- "minimist": "^1.2.6"
- }
- },
"didyoumean": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
- "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
+ "dev": true
},
"diffie-hellman": {
"version": "5.0.3",
@@ -14610,7 +14893,8 @@
"dlv": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
- "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "dev": true
},
"dns-equal": {
"version": "1.0.0",
@@ -14702,6 +14986,12 @@
"resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
"integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA=="
},
+ "eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -14718,9 +15008,9 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"electron-to-chromium": {
- "version": "1.4.338",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.338.tgz",
- "integrity": "sha512-Kfq90LFsNtGOwCZJ77XQa2fSuGQVlEBIGqiccfXxkoYTe5o79dE/9GMXR2R9OWjKGFfRVX4GHYxeCUyA8mRJlw=="
+ "version": "1.4.690",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.690.tgz",
+ "integrity": "sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA=="
},
"elliptic": {
"version": "6.5.4",
@@ -15044,9 +15334,9 @@
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"fast-glob": {
- "version": "3.2.12",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
- "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
"requires": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
@@ -15186,6 +15476,24 @@
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
},
+ "foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "dependencies": {
+ "signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true
+ }
+ }
+ },
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -15209,9 +15517,9 @@
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
},
"fraction.js": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
- "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA=="
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="
},
"fresh": {
"version": "0.5.2",
@@ -15247,9 +15555,9 @@
"optional": true
},
"function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
},
"gensync": {
"version": "1.0.0-beta.2",
@@ -15430,16 +15738,19 @@
"minimalistic-assert": "^1.0.1"
}
},
+ "hasown": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz",
+ "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==",
+ "requires": {
+ "function-bind": "^1.1.2"
+ }
+ },
"he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
},
- "hex-color-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
- "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ=="
- },
"hmac-drbg": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
@@ -15461,16 +15772,6 @@
"wbuf": "^1.1.0"
}
},
- "hsl-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
- "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A=="
- },
- "hsla-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz",
- "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA=="
- },
"html-entities": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz",
@@ -15779,25 +16080,12 @@
"ci-info": "^3.2.0"
}
},
- "is-color-stop": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz",
- "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==",
- "requires": {
- "css-color-names": "^0.0.4",
- "hex-color-regex": "^1.1.0",
- "hsl-regex": "^1.0.0",
- "hsla-regex": "^1.0.0",
- "rgb-regex": "^1.0.1",
- "rgba-regex": "^1.0.0"
- }
- },
"is-core-module": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
- "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
"requires": {
- "has": "^1.0.3"
+ "hasown": "^2.0.0"
}
},
"is-docker": {
@@ -15903,6 +16191,16 @@
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
"dev": true
},
+ "jackspeak": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
+ "dev": true,
+ "requires": {
+ "@isaacs/cliui": "^8.0.2",
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"jest-worker": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
@@ -15928,6 +16226,12 @@
}
}
},
+ "jiti": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
+ "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
+ "dev": true
+ },
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -16254,7 +16558,8 @@
"lodash.castarray": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
- "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q=="
+ "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
+ "dev": true
},
"lodash.debounce": {
"version": "4.0.8",
@@ -16264,7 +16569,8 @@
"lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "dev": true
},
"lodash.memoize": {
"version": "4.1.2",
@@ -16274,7 +16580,8 @@
"lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
},
"lodash.once": {
"version": "4.1.1",
@@ -16282,11 +16589,6 @@
"integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
"dev": true
},
- "lodash.topath": {
- "version": "4.5.2",
- "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz",
- "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg=="
- },
"lodash.uniq": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
@@ -16568,7 +16870,8 @@
"mini-svg-data-uri": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",
- "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg=="
+ "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==",
+ "dev": true
},
"minimalistic-assert": {
"version": "1.0.1",
@@ -16593,10 +16896,11 @@
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
},
- "modern-normalize": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz",
- "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA=="
+ "minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true
},
"ms": {
"version": "2.1.2",
@@ -16612,10 +16916,21 @@
"thunky": "^1.0.2"
}
},
+ "mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dev": true,
+ "requires": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
"nanoid": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
- "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA=="
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g=="
},
"negotiator": {
"version": "0.6.3",
@@ -16636,14 +16951,6 @@
"tslib": "^2.0.3"
}
},
- "node-emoji": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
- "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==",
- "requires": {
- "lodash": "^4.17.21"
- }
- },
"node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
@@ -16728,9 +17035,9 @@
}
},
"node-releases": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
- "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w=="
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
},
"normalize-path": {
"version": "3.0.0",
@@ -16769,9 +17076,10 @@
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
},
"object-hash": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz",
- "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw=="
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "dev": true
},
"object-inspect": {
"version": "1.12.3",
@@ -16961,6 +17269,24 @@
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
+ "path-scurry": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
+ "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^9.1.1 || ^10.0.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
+ "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
+ "dev": true
+ }
+ }
+ },
"path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
@@ -17011,6 +17337,12 @@
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true
},
+ "pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "dev": true
+ },
"pkg-dir": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
@@ -17020,11 +17352,11 @@
}
},
"postcss": {
- "version": "8.4.29",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz",
- "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==",
+ "version": "8.4.35",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
+ "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
"requires": {
- "nanoid": "^3.3.6",
+ "nanoid": "^3.3.7",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
}
@@ -17082,13 +17414,24 @@
"integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==",
"requires": {}
},
- "postcss-js": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz",
- "integrity": "sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==",
+ "postcss-import": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
+ "dev": true,
"requires": {
- "camelcase-css": "^2.0.1",
- "postcss": "^8.1.6"
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ }
+ },
+ "postcss-js": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
+ "dev": true,
+ "requires": {
+ "camelcase-css": "^2.0.1"
}
},
"postcss-load-config": {
@@ -17222,11 +17565,12 @@
}
},
"postcss-nested": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz",
- "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
+ "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
+ "dev": true,
"requires": {
- "postcss-selector-parser": "^6.0.6"
+ "postcss-selector-parser": "^6.0.11"
}
},
"postcss-normalize-charset": {
@@ -17373,11 +17717,6 @@
"integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
"dev": true
},
- "pretty-hrtime": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
- "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A=="
- },
"pretty-time": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz",
@@ -17500,11 +17839,6 @@
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
},
- "quick-lru": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
- "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="
- },
"randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -17538,6 +17872,15 @@
"unpipe": "1.0.0"
}
},
+ "read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "dev": true,
+ "requires": {
+ "pify": "^2.3.0"
+ }
+ },
"readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
@@ -17583,22 +17926,6 @@
"resolve": "^1.9.0"
}
},
- "reduce-css-calc": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz",
- "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==",
- "requires": {
- "css-unit-converter": "^1.1.1",
- "postcss-value-parser": "^3.3.0"
- },
- "dependencies": {
- "postcss-value-parser": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
- "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ=="
- }
- }
- },
"regenerate": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@@ -17693,11 +18020,11 @@
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
},
"resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
"requires": {
- "is-core-module": "^2.9.0",
+ "is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
}
@@ -17776,16 +18103,6 @@
"integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
"dev": true
},
- "rgb-regex": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
- "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w=="
- },
- "rgba-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz",
- "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg=="
- },
"rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -18077,21 +18394,6 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
- "simple-swizzle": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
- "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
- "requires": {
- "is-arrayish": "^0.3.1"
- },
- "dependencies": {
- "is-arrayish": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
- "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
- }
- }
- },
"slash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
@@ -18276,6 +18578,17 @@
"strip-ansi": "^6.0.1"
}
},
+ "string-width-cjs": {
+ "version": "npm:string-width@4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ }
+ },
"stringify-attributes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/stringify-attributes/-/stringify-attributes-3.0.0.tgz",
@@ -18299,6 +18612,15 @@
"ansi-regex": "^5.0.1"
}
},
+ "strip-ansi-cjs": {
+ "version": "npm:strip-ansi@6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ },
"strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
@@ -18334,6 +18656,71 @@
"postcss-selector-parser": "^6.0.4"
}
},
+ "sucrase": {
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "^10.3.10",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "dependencies": {
+ "@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "dev": true
+ },
+ "glob": {
+ "version": "10.3.10",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
+ "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "dev": true,
+ "requires": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.5",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ }
+ },
+ "minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ }
+ }
+ },
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -18369,120 +18756,67 @@
}
},
"tailwindcss": {
- "version": "2.2.19",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-2.2.19.tgz",
- "integrity": "sha512-6Ui7JSVtXadtTUo2NtkBBacobzWiQYVjYW0ZnKaP9S1ZCKQ0w7KVNz+YSDI/j7O7KCMHbOkz94ZMQhbT9pOqjw==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
+ "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==",
+ "dev": true,
"requires": {
- "arg": "^5.0.1",
- "bytes": "^3.0.0",
- "chalk": "^4.1.2",
- "chokidar": "^3.5.2",
- "color": "^4.0.1",
- "cosmiconfig": "^7.0.1",
- "detective": "^5.2.0",
+ "@alloc/quick-lru": "^5.2.0",
+ "arg": "^5.0.2",
+ "chokidar": "^3.5.3",
"didyoumean": "^1.2.2",
"dlv": "^1.1.3",
- "fast-glob": "^3.2.7",
- "fs-extra": "^10.0.0",
- "glob-parent": "^6.0.1",
- "html-tags": "^3.1.0",
- "is-color-stop": "^1.1.0",
- "is-glob": "^4.0.1",
- "lodash": "^4.17.21",
- "lodash.topath": "^4.5.2",
- "modern-normalize": "^1.1.0",
- "node-emoji": "^1.11.0",
+ "fast-glob": "^3.3.0",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.19.1",
+ "lilconfig": "^2.1.0",
+ "micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
- "object-hash": "^2.2.0",
- "postcss-js": "^3.0.3",
- "postcss-load-config": "^3.1.0",
- "postcss-nested": "5.0.6",
- "postcss-selector-parser": "^6.0.6",
- "postcss-value-parser": "^4.1.0",
- "pretty-hrtime": "^1.0.3",
- "purgecss": "^4.0.3",
- "quick-lru": "^5.1.1",
- "reduce-css-calc": "^2.1.8",
- "resolve": "^1.20.0",
- "tmp": "^0.2.1"
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.23",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.1",
+ "postcss-nested": "^6.0.1",
+ "postcss-selector-parser": "^6.0.11",
+ "resolve": "^1.22.2",
+ "sucrase": "^3.32.0"
},
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "commander": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
- "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="
- },
- "fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
"glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
"requires": {
"is-glob": "^4.0.3"
}
},
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "purgecss": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-4.1.3.tgz",
- "integrity": "sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==",
+ "postcss-load-config": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
+ "dev": true,
"requires": {
- "commander": "^8.0.0",
- "glob": "^7.1.7",
- "postcss": "^8.3.5",
- "postcss-selector-parser": "^6.0.6"
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
+ "dependencies": {
+ "lilconfig": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz",
+ "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==",
+ "dev": true
+ }
}
},
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
+ "yaml": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.0.tgz",
+ "integrity": "sha512-j9iR8g+/t0lArF4V6NE/QCfT+CO7iLqrXAHZbJdo+LfjqP1vR8Fg5bSiaq6Q2lOD1AUEVrEVIgABvBFYojJVYQ==",
+ "dev": true
}
}
},
@@ -18538,6 +18872,24 @@
}
}
},
+ "thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dev": true,
+ "requires": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dev": true,
+ "requires": {
+ "thenify": ">= 3.1.0 < 4"
+ }
+ },
"throttleit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
@@ -18572,6 +18924,7 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
"integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+ "dev": true,
"requires": {
"rimraf": "^3.0.0"
}
@@ -18617,6 +18970,12 @@
}
}
},
+ "ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
+ "dev": true
+ },
"tslib": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
@@ -18697,9 +19056,9 @@
"dev": true
},
"update-browserslist-db": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
- "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
"requires": {
"escalade": "^3.1.1",
"picocolors": "^1.0.0"
@@ -19250,6 +19609,43 @@
}
}
},
+ "wrap-ansi-cjs": {
+ "version": "npm:wrap-ansi@7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ }
+ }
+ },
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
diff --git a/package.json b/package.json
index f7318d6ee651..bff788fc32b2 100644
--- a/package.json
+++ b/package.json
@@ -9,18 +9,20 @@
"@babel/compat-data": "7.15.0",
"@babel/plugin-proposal-class-properties": "^7.14.5",
"@tailwindcss/aspect-ratio": "^0.4.2",
+ "@tailwindcss/forms": "^0.5.7",
+ "@tailwindcss/line-clamp": "^0.4.4",
+ "@tailwindcss/typography": "^0.5.10",
+ "autoprefixer": "^10.4.18",
"cypress": "^12.5.1",
"laravel-mix-purgecss": "^6.0.0",
"laravel-vite-plugin": "^0.8.0",
+ "postcss": "^8.4.35",
+ "tailwindcss": "^3.4.1",
"vite": "^4.4.9",
"vite-plugin-static-copy": "^0.17.0",
"vue-template-compiler": "^2.6.14"
},
"dependencies": {
- "@tailwindcss/forms": "^0.3.4",
- "@tailwindcss/line-clamp": "^0.3.1",
- "@tailwindcss/typography": "^0.4.1",
- "autoprefixer": "^10.3.7",
"axios": "^0.25",
"card-js": "^1.0.13",
"card-validator": "^8.1.1",
@@ -31,11 +33,9 @@
"laravel-mix": "^6.0.34",
"linkify-urls": "^4.0.0",
"lodash": "^4.17.21",
- "postcss": "^8.3.11",
"resolve-url-loader": "^4.0.0",
"sass": "^1.43.4",
- "sass-loader": "^12.3.0",
- "tailwindcss": "^2.2.17"
+ "sass-loader": "^12.3.0"
},
"type": "module"
}
diff --git a/phpunit.xml b/phpunit.xml
index 113938ad5e36..1c27f29b2b43 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -25,7 +25,7 @@
-
+
diff --git a/public/build/assets/app-8722f22d.js b/public/build/assets/app-8722f22d.js
new file mode 100644
index 000000000000..0ea9e0562080
--- /dev/null
+++ b/public/build/assets/app-8722f22d.js
@@ -0,0 +1,109 @@
+import{A as Sl}from"./index-08e160a7.js";import{c as zt,g as El}from"./_commonjsHelpers-725317a4.js";var Ol={visa:{niceType:"Visa",type:"visa",patterns:[4],gaps:[4,8,12],lengths:[16,18,19],code:{name:"CVV",size:3}},mastercard:{niceType:"Mastercard",type:"mastercard",patterns:[[51,55],[2221,2229],[223,229],[23,26],[270,271],2720],gaps:[4,8,12],lengths:[16],code:{name:"CVC",size:3}},"american-express":{niceType:"American Express",type:"american-express",patterns:[34,37],gaps:[4,10],lengths:[15],code:{name:"CID",size:4}},"diners-club":{niceType:"Diners Club",type:"diners-club",patterns:[[300,305],36,38,39],gaps:[4,10],lengths:[14,16,19],code:{name:"CVV",size:3}},discover:{niceType:"Discover",type:"discover",patterns:[6011,[644,649],65],gaps:[4,8,12],lengths:[16,19],code:{name:"CID",size:3}},jcb:{niceType:"JCB",type:"jcb",patterns:[2131,1800,[3528,3589]],gaps:[4,8,12],lengths:[16,17,18,19],code:{name:"CVV",size:3}},unionpay:{niceType:"UnionPay",type:"unionpay",patterns:[620,[624,626],[62100,62182],[62184,62187],[62185,62197],[62200,62205],[622010,622999],622018,[622019,622999],[62207,62209],[622126,622925],[623,626],6270,6272,6276,[627700,627779],[627781,627799],[6282,6289],6291,6292,810,[8110,8131],[8132,8151],[8152,8163],[8164,8171]],gaps:[4,8,12],lengths:[14,15,16,17,18,19],code:{name:"CVN",size:3}},maestro:{niceType:"Maestro",type:"maestro",patterns:[493698,[5e5,504174],[504176,506698],[506779,508999],[56,59],63,67,6],gaps:[4,8,12],lengths:[12,13,14,15,16,17,18,19],code:{name:"CVC",size:3}},elo:{niceType:"Elo",type:"elo",patterns:[401178,401179,438935,457631,457632,431274,451416,457393,504175,[506699,506778],[509e3,509999],627780,636297,636368,[650031,650033],[650035,650051],[650405,650439],[650485,650538],[650541,650598],[650700,650718],[650720,650727],[650901,650978],[651652,651679],[655e3,655019],[655021,655058]],gaps:[4,8,12],lengths:[16],code:{name:"CVE",size:3}},mir:{niceType:"Mir",type:"mir",patterns:[[2200,2204]],gaps:[4,8,12],lengths:[16,17,18,19],code:{name:"CVP2",size:3}},hiper:{niceType:"Hiper",type:"hiper",patterns:[637095,63737423,63743358,637568,637599,637609,637612],gaps:[4,8,12],lengths:[16],code:{name:"CVC",size:3}},hipercard:{niceType:"Hipercard",type:"hipercard",patterns:[606282],gaps:[4,8,12],lengths:[16],code:{name:"CVC",size:3}}},Cl=Ol,ni={},Sn={};Object.defineProperty(Sn,"__esModule",{value:!0});Sn.clone=void 0;function Al(e){return e?JSON.parse(JSON.stringify(e)):null}Sn.clone=Al;var ii={};Object.defineProperty(ii,"__esModule",{value:!0});ii.matches=void 0;function Tl(e,r,n){var a=String(r).length,s=e.substr(0,a),l=parseInt(s,10);return r=parseInt(String(r).substr(0,s.length),10),n=parseInt(String(n).substr(0,s.length),10),l>=r&&l<=n}function Pl(e,r){return r=String(r),r.substring(0,e.length)===e.substring(0,r.length)}function Rl(e,r){return Array.isArray(r)?Tl(e,r[0],r[1]):Pl(e,r)}ii.matches=Rl;Object.defineProperty(ni,"__esModule",{value:!0});ni.addMatchingCardsToResults=void 0;var Ml=Sn,kl=ii;function Nl(e,r,n){var a,s;for(a=0;a=s&&(v.matchStrength=s),n.push(v);break}}}ni.addMatchingCardsToResults=Nl;var ai={};Object.defineProperty(ai,"__esModule",{value:!0});ai.isValidInputType=void 0;function Ll(e){return typeof e=="string"||e instanceof String}ai.isValidInputType=Ll;var oi={};Object.defineProperty(oi,"__esModule",{value:!0});oi.findBestMatch=void 0;function jl(e){var r=e.filter(function(n){return n.matchStrength}).length;return r>0&&r===e.length}function Il(e){return jl(e)?e.reduce(function(r,n){return!r||Number(r.matchStrength)Hl?vn(!1,!1):Ul.test(e)?vn(!1,!0):vn(!0,!0)}si.cardholderName=ql;var li={};function Vl(e){for(var r=0,n=!1,a=e.length-1,s;a>=0;)s=parseInt(e.charAt(a),10),n&&(s*=2,s>9&&(s=s%10+1)),n=!n,r+=s,a--;return r%10===0}var zl=Vl;Object.defineProperty(li,"__esModule",{value:!0});li.cardNumber=void 0;var Wl=zl,ao=Uo;function wr(e,r,n){return{card:e,isPotentiallyValid:r,isValid:n}}function Kl(e,r){r===void 0&&(r={});var n,a,s;if(typeof e!="string"&&typeof e!="number")return wr(null,!1,!1);var l=String(e).replace(/-|\s/g,"");if(!/^\d*$/.test(l))return wr(null,!1,!1);var v=ao(l);if(v.length===0)return wr(null,!1,!1);if(v.length!==1)return wr(null,!0,!1);var g=v[0];if(r.maxLength&&l.length>r.maxLength)return wr(g,!1,!1);g.type===ao.types.UNIONPAY&&r.luhnValidateUnionPay!==!0?a=!0:a=Wl(l),s=Math.max.apply(null,g.lengths),r.maxLength&&(s=Math.min(r.maxLength,s));for(var T=0;T4)return ir(!1,!1);var g=parseInt(e,10),T=Number(String(s).substr(2,2)),B=!1;if(a===2){if(String(s).substr(0,2)===e)return ir(!1,!0);n=T===g,B=g>=T&&g<=T+r}else a===4&&(n=s===g,B=g>=s&&g<=s+r);return ir(B,B,n)}Xr.expirationYear=Gl;var fi={};Object.defineProperty(fi,"__esModule",{value:!0});fi.isArray=void 0;fi.isArray=Array.isArray||function(e){return Object.prototype.toString.call(e)==="[object Array]"};Object.defineProperty(ci,"__esModule",{value:!0});ci.parseDate=void 0;var Yl=Xr,Xl=fi;function Ql(e){var r=Number(e[0]),n;return r===0?2:r>1||r===1&&Number(e[1])>2?1:r===1?(n=e.substr(1),Yl.expirationYear(n).isPotentiallyValid?1:2):e.length===5?1:e.length>5?2:1}function Zl(e){var r;if(/^\d{4}-\d{1,2}$/.test(e)?r=e.split("-").reverse():/\//.test(e)?r=e.split(/\s*\/\s*/g):/\s/.test(e)&&(r=e.split(/ +/g)),Xl.isArray(r))return{month:r[0]||"",year:r.slice(1).join()};var n=Ql(e),a=e.substr(0,n);return{month:a,year:e.substr(a.length)}}ci.parseDate=Zl;var On={};Object.defineProperty(On,"__esModule",{value:!0});On.expirationMonth=void 0;function yn(e,r,n){return{isValid:e,isPotentiallyValid:r,isValidForThisYear:n||!1}}function eu(e){var r=new Date().getMonth()+1;if(typeof e!="string")return yn(!1,!1);if(e.replace(/\s/g,"")===""||e==="0")return yn(!1,!0);if(!/^\d*$/.test(e))return yn(!1,!1);var n=parseInt(e,10);if(isNaN(Number(e)))return yn(!1,!1);var a=n>0&&n<13;return yn(a,a,a&&n>=r)}On.expirationMonth=eu;var ra=zt&&zt.__assign||function(){return ra=Object.assign||function(e){for(var r,n=1,a=arguments.length;nr?e[n]:r;return r}function Hr(e,r){return{isValid:e,isPotentiallyValid:r}}function su(e,r){return r===void 0&&(r=Ho),r=r instanceof Array?r:[r],typeof e!="string"||!/^\d*$/.test(e)?Hr(!1,!1):au(r,e.length)?Hr(!0,!0):e.lengthou(r)?Hr(!1,!1):Hr(!0,!0)}di.cvv=su;var pi={};Object.defineProperty(pi,"__esModule",{value:!0});pi.postalCode=void 0;var lu=3;function Ji(e,r){return{isValid:e,isPotentiallyValid:r}}function uu(e,r){r===void 0&&(r={});var n=r.minLength||lu;return typeof e!="string"?Ji(!1,!1):e.lengthfunction(){return r||(0,e[Vo(e)[0]])((r={exports:{}}).exports,r),r.exports},Tu=(e,r,n,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of Vo(r))!Au.call(e,s)&&s!==n&&qo(e,s,{get:()=>r[s],enumerable:!(a=Ou(r,s))||a.enumerable});return e},tt=(e,r,n)=>(n=e!=null?Eu(Cu(e)):{},Tu(r||!e||!e.__esModule?qo(n,"default",{value:e,enumerable:!0}):n,e)),Ot=Zt({"../alpine/packages/alpinejs/dist/module.cjs.js"(e,r){var n=Object.create,a=Object.defineProperty,s=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,v=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty,T=(t,i)=>function(){return i||(0,t[l(t)[0]])((i={exports:{}}).exports,i),i.exports},B=(t,i)=>{for(var o in i)a(t,o,{get:i[o],enumerable:!0})},le=(t,i,o,c)=>{if(i&&typeof i=="object"||typeof i=="function")for(let d of l(i))!g.call(t,d)&&d!==o&&a(t,d,{get:()=>i[d],enumerable:!(c=s(i,d))||c.enumerable});return t},ne=(t,i,o)=>(o=t!=null?n(v(t)):{},le(i||!t||!t.__esModule?a(o,"default",{value:t,enumerable:!0}):o,t)),z=t=>le(a({},"__esModule",{value:!0}),t),Y=T({"node_modules/@vue/shared/dist/shared.cjs.js"(t){Object.defineProperty(t,"__esModule",{value:!0});function i(b,K){const ee=Object.create(null),fe=b.split(",");for(let qe=0;qe!!ee[qe.toLowerCase()]:qe=>!!ee[qe]}var o={1:"TEXT",2:"CLASS",4:"STYLE",8:"PROPS",16:"FULL_PROPS",32:"HYDRATE_EVENTS",64:"STABLE_FRAGMENT",128:"KEYED_FRAGMENT",256:"UNKEYED_FRAGMENT",512:"NEED_PATCH",1024:"DYNAMIC_SLOTS",2048:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},c={1:"STABLE",2:"DYNAMIC",3:"FORWARDED"},d="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt",p=i(d),m=2;function x(b,K=0,ee=b.length){let fe=b.split(/(\r?\n)/);const qe=fe.filter((xt,dt)=>dt%2===1);fe=fe.filter((xt,dt)=>dt%2===0);let et=0;const wt=[];for(let xt=0;xt=K){for(let dt=xt-m;dt<=xt+m||ee>et;dt++){if(dt<0||dt>=fe.length)continue;const gn=dt+1;wt.push(`${gn}${" ".repeat(Math.max(3-String(gn).length,0))}| ${fe[dt]}`);const Br=fe[dt].length,Zn=qe[dt]&&qe[dt].length||0;if(dt===xt){const Ur=K-(et-(Br+Zn)),Wi=Math.max(1,ee>et?Br-Ur:ee-K);wt.push(" | "+" ".repeat(Ur)+"^".repeat(Wi))}else if(dt>xt){if(ee>et){const Ur=Math.max(Math.min(ee-et,Br),1);wt.push(" | "+"^".repeat(Ur))}et+=Br+Zn}}break}return wt.join(`
+`)}var M="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Z=i(M),Me=i(M+",async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected"),Qe=/[>/="'\u0009\u000a\u000c\u0020]/,De={};function Je(b){if(De.hasOwnProperty(b))return De[b];const K=Qe.test(b);return K&&console.error(`unsafe attribute name: ${b}`),De[b]=!K}var Tt={acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},Ut=i("animation-iteration-count,border-image-outset,border-image-slice,border-image-width,box-flex,box-flex-group,box-ordinal-group,column-count,columns,flex,flex-grow,flex-positive,flex-shrink,flex-negative,flex-order,grid-row,grid-row-end,grid-row-span,grid-row-start,grid-column,grid-column-end,grid-column-span,grid-column-start,font-weight,line-clamp,line-height,opacity,order,orphans,tab-size,widows,z-index,zoom,fill-opacity,flood-opacity,stop-opacity,stroke-dasharray,stroke-dashoffset,stroke-miterlimit,stroke-opacity,stroke-width"),we=i("accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap");function Ue(b){if(Dt(b)){const K={};for(let ee=0;ee{if(ee){const fe=ee.split(He);fe.length>1&&(K[fe[0].trim()]=fe[1].trim())}}),K}function It(b){let K="";if(!b)return K;for(const ee in b){const fe=b[ee],qe=ee.startsWith("--")?ee:Xn(ee);(vr(fe)||typeof fe=="number"&&Ut(qe))&&(K+=`${qe}:${fe};`)}return K}function Ht(b){let K="";if(vr(b))K=b;else if(Dt(b))for(let ee=0;ee]/;function Ii(b){const K=""+b,ee=ji.exec(K);if(!ee)return K;let fe="",qe,et,wt=0;for(et=ee.index;et||--!>|Mr(ee,K))}var Bn=b=>b==null?"":qt(b)?JSON.stringify(b,Fi,2):String(b),Fi=(b,K)=>mr(K)?{[`Map(${K.size})`]:[...K.entries()].reduce((ee,[fe,qe])=>(ee[`${fe} =>`]=qe,ee),{})}:$t(K)?{[`Set(${K.size})`]:[...K.values()]}:qt(K)&&!Dt(K)&&!Wn(K)?String(K):K,Bi=["bigInt","optionalChaining","nullishCoalescingOperator"],un=Object.freeze({}),cn=Object.freeze([]),fn=()=>{},kr=()=>!1,Nr=/^on[^a-z]/,Lr=b=>Nr.test(b),jr=b=>b.startsWith("onUpdate:"),Un=Object.assign,Hn=(b,K)=>{const ee=b.indexOf(K);ee>-1&&b.splice(ee,1)},qn=Object.prototype.hasOwnProperty,Vn=(b,K)=>qn.call(b,K),Dt=Array.isArray,mr=b=>yr(b)==="[object Map]",$t=b=>yr(b)==="[object Set]",dn=b=>b instanceof Date,pn=b=>typeof b=="function",vr=b=>typeof b=="string",Ui=b=>typeof b=="symbol",qt=b=>b!==null&&typeof b=="object",Ir=b=>qt(b)&&pn(b.then)&&pn(b.catch),zn=Object.prototype.toString,yr=b=>zn.call(b),Hi=b=>yr(b).slice(8,-1),Wn=b=>yr(b)==="[object Object]",Kn=b=>vr(b)&&b!=="NaN"&&b[0]!=="-"&&""+parseInt(b,10)===b,Jn=i(",key,ref,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),br=b=>{const K=Object.create(null);return ee=>K[ee]||(K[ee]=b(ee))},Gn=/-(\w)/g,Yn=br(b=>b.replace(Gn,(K,ee)=>ee?ee.toUpperCase():"")),qi=/\B([A-Z])/g,Xn=br(b=>b.replace(qi,"-$1").toLowerCase()),_r=br(b=>b.charAt(0).toUpperCase()+b.slice(1)),Vi=br(b=>b?`on${_r(b)}`:""),hn=(b,K)=>b!==K&&(b===b||K===K),zi=(b,K)=>{for(let ee=0;ee{Object.defineProperty(b,K,{configurable:!0,enumerable:!1,value:ee})},$r=b=>{const K=parseFloat(b);return isNaN(K)?b:K},Fr,Qn=()=>Fr||(Fr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});t.EMPTY_ARR=cn,t.EMPTY_OBJ=un,t.NO=kr,t.NOOP=fn,t.PatchFlagNames=o,t.babelParserDefaultPlugins=Bi,t.camelize=Yn,t.capitalize=_r,t.def=Dr,t.escapeHtml=Ii,t.escapeHtmlComment=Di,t.extend=Un,t.generateCodeFrame=x,t.getGlobalThis=Qn,t.hasChanged=hn,t.hasOwn=Vn,t.hyphenate=Xn,t.invokeArrayFns=zi,t.isArray=Dt,t.isBooleanAttr=Me,t.isDate=dn,t.isFunction=pn,t.isGloballyWhitelisted=p,t.isHTMLTag=Pr,t.isIntegerKey=Kn,t.isKnownAttr=we,t.isMap=mr,t.isModelListener=jr,t.isNoUnitNumericStyleProp=Ut,t.isObject=qt,t.isOn=Lr,t.isPlainObject=Wn,t.isPromise=Ir,t.isReservedProp=Jn,t.isSSRSafeAttrName=Je,t.isSVGTag=Li,t.isSet=$t,t.isSpecialBooleanAttr=Z,t.isString=vr,t.isSymbol=Ui,t.isVoidTag=Rr,t.looseEqual=Mr,t.looseIndexOf=Fn,t.makeMap=i,t.normalizeClass=Ht,t.normalizeStyle=Ue,t.objectToString=zn,t.parseStringStyle=_t,t.propsToAttrMap=Tt,t.remove=Hn,t.slotFlagsText=c,t.stringifyStyle=It,t.toDisplayString=Bn,t.toHandlerKey=Vi,t.toNumber=$r,t.toRawType=Hi,t.toTypeString=yr}}),S=T({"node_modules/@vue/shared/index.js"(t,i){i.exports=Y()}}),y=T({"node_modules/@vue/reactivity/dist/reactivity.cjs.js"(t){Object.defineProperty(t,"__esModule",{value:!0});var i=S(),o=new WeakMap,c=[],d,p=Symbol("iterate"),m=Symbol("Map key iterate");function x(u){return u&&u._isEffect===!0}function M(u,A=i.EMPTY_OBJ){x(u)&&(u=u.raw);const N=Qe(u,A);return A.lazy||N(),N}function Z(u){u.active&&(De(u),u.options.onStop&&u.options.onStop(),u.active=!1)}var Me=0;function Qe(u,A){const N=function(){if(!N.active)return u();if(!c.includes(N)){De(N);try{return we(),c.push(N),d=N,u()}finally{c.pop(),Ue(),d=c[c.length-1]}}};return N.id=Me++,N.allowRecurse=!!A.allowRecurse,N._isEffect=!0,N.active=!0,N.raw=u,N.deps=[],N.options=A,N}function De(u){const{deps:A}=u;if(A.length){for(let N=0;N{vt&&vt.forEach(Ft=>{(Ft!==d||Ft.allowRecurse)&&nt.add(Ft)})};if(A==="clear")Le.forEach(St);else if(N==="length"&&i.isArray(u))Le.forEach((vt,Ft)=>{(Ft==="length"||Ft>=ae)&&St(vt)});else switch(N!==void 0&&St(Le.get(N)),A){case"add":i.isArray(u)?i.isIntegerKey(N)&&St(Le.get("length")):(St(Le.get(p)),i.isMap(u)&&St(Le.get(m)));break;case"delete":i.isArray(u)||(St(Le.get(p)),i.isMap(u)&&St(Le.get(m)));break;case"set":i.isMap(u)&&St(Le.get(p));break}const mn=vt=>{vt.options.onTrigger&&vt.options.onTrigger({effect:vt,target:u,key:N,type:A,newValue:ae,oldValue:J,oldTarget:ge}),vt.options.scheduler?vt.options.scheduler(vt):vt()};nt.forEach(mn)}var _t=i.makeMap("__proto__,__v_isRef,__isVue"),It=new Set(Object.getOwnPropertyNames(Symbol).map(u=>Symbol[u]).filter(i.isSymbol)),Ht=Rr(),Tr=Rr(!1,!0),sn=Rr(!0),ln=Rr(!0,!0),Pr=Li();function Li(){const u={};return["includes","indexOf","lastIndexOf"].forEach(A=>{u[A]=function(...N){const ae=b(this);for(let ge=0,Le=this.length;ge{u[A]=function(...N){Ut();const ae=b(this)[A].apply(this,N);return Ue(),ae}}),u}function Rr(u=!1,A=!1){return function(ae,J,ge){if(J==="__v_isReactive")return!u;if(J==="__v_isReadonly")return u;if(J==="__v_raw"&&ge===(u?A?Yn:Gn:A?br:Jn).get(ae))return ae;const Le=i.isArray(ae);if(!u&&Le&&i.hasOwn(Pr,J))return Reflect.get(Pr,J,ge);const nt=Reflect.get(ae,J,ge);return(i.isSymbol(J)?It.has(J):_t(J))||(u||Ne(ae,"get",J),A)?nt:fe(nt)?!Le||!i.isIntegerKey(J)?nt.value:nt:i.isObject(nt)?u?hn(nt):_r(nt):nt}}var ji=$n(),Ii=$n(!0);function $n(u=!1){return function(N,ae,J,ge){let Le=N[ae];if(!u&&(J=b(J),Le=b(Le),!i.isArray(N)&&fe(Le)&&!fe(J)))return Le.value=J,!0;const nt=i.isArray(N)&&i.isIntegerKey(ae)?Number(ae)i.isObject(u)?_r(u):u,cn=u=>i.isObject(u)?hn(u):u,fn=u=>u,kr=u=>Reflect.getPrototypeOf(u);function Nr(u,A,N=!1,ae=!1){u=u.__v_raw;const J=b(u),ge=b(A);A!==ge&&!N&&Ne(J,"get",A),!N&&Ne(J,"get",ge);const{has:Le}=kr(J),nt=ae?fn:N?cn:un;if(Le.call(J,A))return nt(u.get(A));if(Le.call(J,ge))return nt(u.get(ge));u!==J&&u.get(A)}function Lr(u,A=!1){const N=this.__v_raw,ae=b(N),J=b(u);return u!==J&&!A&&Ne(ae,"has",u),!A&&Ne(ae,"has",J),u===J?N.has(u):N.has(u)||N.has(J)}function jr(u,A=!1){return u=u.__v_raw,!A&&Ne(b(u),"iterate",p),Reflect.get(u,"size",u)}function Un(u){u=b(u);const A=b(this);return kr(A).has.call(A,u)||(A.add(u),He(A,"add",u,u)),this}function Hn(u,A){A=b(A);const N=b(this),{has:ae,get:J}=kr(N);let ge=ae.call(N,u);ge?Kn(N,ae,u):(u=b(u),ge=ae.call(N,u));const Le=J.call(N,u);return N.set(u,A),ge?i.hasChanged(A,Le)&&He(N,"set",u,A,Le):He(N,"add",u,A),this}function qn(u){const A=b(this),{has:N,get:ae}=kr(A);let J=N.call(A,u);J?Kn(A,N,u):(u=b(u),J=N.call(A,u));const ge=ae?ae.call(A,u):void 0,Le=A.delete(u);return J&&He(A,"delete",u,void 0,ge),Le}function Vn(){const u=b(this),A=u.size!==0,N=i.isMap(u)?new Map(u):new Set(u),ae=u.clear();return A&&He(u,"clear",void 0,void 0,N),ae}function Dt(u,A){return function(ae,J){const ge=this,Le=ge.__v_raw,nt=b(Le),St=A?fn:u?cn:un;return!u&&Ne(nt,"iterate",p),Le.forEach((mn,vt)=>ae.call(J,St(mn),St(vt),ge))}}function mr(u,A,N){return function(...ae){const J=this.__v_raw,ge=b(J),Le=i.isMap(ge),nt=u==="entries"||u===Symbol.iterator&&Le,St=u==="keys"&&Le,mn=J[u](...ae),vt=N?fn:A?cn:un;return!A&&Ne(ge,"iterate",St?m:p),{next(){const{value:Ft,done:Ki}=mn.next();return Ki?{value:Ft,done:Ki}:{value:nt?[vt(Ft[0]),vt(Ft[1])]:vt(Ft),done:Ki}},[Symbol.iterator](){return this}}}}function $t(u){return function(...A){{const N=A[0]?`on key "${A[0]}" `:"";console.warn(`${i.capitalize(u)} operation ${N}failed: target is readonly.`,b(this))}return u==="delete"?!1:this}}function dn(){const u={get(ge){return Nr(this,ge)},get size(){return jr(this)},has:Lr,add:Un,set:Hn,delete:qn,clear:Vn,forEach:Dt(!1,!1)},A={get(ge){return Nr(this,ge,!1,!0)},get size(){return jr(this)},has:Lr,add:Un,set:Hn,delete:qn,clear:Vn,forEach:Dt(!1,!0)},N={get(ge){return Nr(this,ge,!0)},get size(){return jr(this,!0)},has(ge){return Lr.call(this,ge,!0)},add:$t("add"),set:$t("set"),delete:$t("delete"),clear:$t("clear"),forEach:Dt(!0,!1)},ae={get(ge){return Nr(this,ge,!0,!0)},get size(){return jr(this,!0)},has(ge){return Lr.call(this,ge,!0)},add:$t("add"),set:$t("set"),delete:$t("delete"),clear:$t("clear"),forEach:Dt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(ge=>{u[ge]=mr(ge,!1,!1),N[ge]=mr(ge,!0,!1),A[ge]=mr(ge,!1,!0),ae[ge]=mr(ge,!0,!0)}),[u,N,A,ae]}var[pn,vr,Ui,qt]=dn();function Ir(u,A){const N=A?u?qt:Ui:u?vr:pn;return(ae,J,ge)=>J==="__v_isReactive"?!u:J==="__v_isReadonly"?u:J==="__v_raw"?ae:Reflect.get(i.hasOwn(N,J)&&J in ae?N:ae,J,ge)}var zn={get:Ir(!1,!1)},yr={get:Ir(!1,!0)},Hi={get:Ir(!0,!1)},Wn={get:Ir(!0,!0)};function Kn(u,A,N){const ae=b(N);if(ae!==N&&A.call(u,ae)){const J=i.toRawType(u);console.warn(`Reactive ${J} contains both the raw and reactive versions of the same object${J==="Map"?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}var Jn=new WeakMap,br=new WeakMap,Gn=new WeakMap,Yn=new WeakMap;function qi(u){switch(u){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Xn(u){return u.__v_skip||!Object.isExtensible(u)?0:qi(i.toRawType(u))}function _r(u){return u&&u.__v_isReadonly?u:Dr(u,!1,Fn,zn,Jn)}function Vi(u){return Dr(u,!1,Fi,yr,br)}function hn(u){return Dr(u,!0,Bn,Hi,Gn)}function zi(u){return Dr(u,!0,Bi,Wn,Yn)}function Dr(u,A,N,ae,J){if(!i.isObject(u))return console.warn(`value cannot be made reactive: ${String(u)}`),u;if(u.__v_raw&&!(A&&u.__v_isReactive))return u;const ge=J.get(u);if(ge)return ge;const Le=Xn(u);if(Le===0)return u;const nt=new Proxy(u,Le===2?ae:N);return J.set(u,nt),nt}function $r(u){return Fr(u)?$r(u.__v_raw):!!(u&&u.__v_isReactive)}function Fr(u){return!!(u&&u.__v_isReadonly)}function Qn(u){return $r(u)||Fr(u)}function b(u){return u&&b(u.__v_raw)||u}function K(u){return i.def(u,"__v_skip",!0),u}var ee=u=>i.isObject(u)?_r(u):u;function fe(u){return!!(u&&u.__v_isRef===!0)}function qe(u){return xt(u)}function et(u){return xt(u,!0)}var wt=class{constructor(u,A=!1){this._shallow=A,this.__v_isRef=!0,this._rawValue=A?u:b(u),this._value=A?u:ee(u)}get value(){return Ne(b(this),"get","value"),this._value}set value(u){u=this._shallow?u:b(u),i.hasChanged(u,this._rawValue)&&(this._rawValue=u,this._value=this._shallow?u:ee(u),He(b(this),"set","value",u))}};function xt(u,A=!1){return fe(u)?u:new wt(u,A)}function dt(u){He(b(u),"set","value",u.value)}function gn(u){return fe(u)?u.value:u}var Br={get:(u,A,N)=>gn(Reflect.get(u,A,N)),set:(u,A,N,ae)=>{const J=u[A];return fe(J)&&!fe(N)?(J.value=N,!0):Reflect.set(u,A,N,ae)}};function Zn(u){return $r(u)?u:new Proxy(u,Br)}var Ur=class{constructor(u){this.__v_isRef=!0;const{get:A,set:N}=u(()=>Ne(this,"get","value"),()=>He(this,"set","value"));this._get=A,this._set=N}get value(){return this._get()}set value(u){this._set(u)}};function Wi(u){return new Ur(u)}function bl(u){Qn(u)||console.warn("toRefs() expects a reactive object but received a plain one.");const A=i.isArray(u)?new Array(u.length):{};for(const N in u)A[N]=io(u,N);return A}var _l=class{constructor(u,A){this._object=u,this._key=A,this.__v_isRef=!0}get value(){return this._object[this._key]}set value(u){this._object[this._key]=u}};function io(u,A){return fe(u[A])?u[A]:new _l(u,A)}var wl=class{constructor(u,A,N){this._setter=A,this._dirty=!0,this.__v_isRef=!0,this.effect=M(u,{lazy:!0,scheduler:()=>{this._dirty||(this._dirty=!0,He(b(this),"set","value"))}}),this.__v_isReadonly=N}get value(){const u=b(this);return u._dirty&&(u._value=this.effect(),u._dirty=!1),Ne(u,"get","value"),u._value}set value(u){this._setter(u)}};function xl(u){let A,N;return i.isFunction(u)?(A=u,N=()=>{console.warn("Write operation failed: computed value is readonly")}):(A=u.get,N=u.set),new wl(A,N,i.isFunction(u)||!u.set)}t.ITERATE_KEY=p,t.computed=xl,t.customRef=Wi,t.effect=M,t.enableTracking=we,t.isProxy=Qn,t.isReactive=$r,t.isReadonly=Fr,t.isRef=fe,t.markRaw=K,t.pauseTracking=Ut,t.proxyRefs=Zn,t.reactive=_r,t.readonly=hn,t.ref=qe,t.resetTracking=Ue,t.shallowReactive=Vi,t.shallowReadonly=zi,t.shallowRef=et,t.stop=Z,t.toRaw=b,t.toRef=io,t.toRefs=bl,t.track=Ne,t.trigger=He,t.triggerRef=dt,t.unref=gn}}),_=T({"node_modules/@vue/reactivity/index.js"(t,i){i.exports=y()}}),O={};B(O,{Alpine:()=>no,default:()=>yl}),r.exports=z(O);var R=!1,I=!1,H=[],Pe=-1;function D(t){C(t)}function C(t){H.includes(t)||H.push(t),re()}function L(t){let i=H.indexOf(t);i!==-1&&i>Pe&&H.splice(i,1)}function re(){!I&&!R&&(R=!0,queueMicrotask(ye))}function ye(){R=!1,I=!0;for(let t=0;tt.effect(i,{scheduler:o=>{Ye?D(o):o()}}),Ge=t.raw}function ht(t){X=t}function yt(t){let i=()=>{};return[c=>{let d=X(c);return t._x_effects||(t._x_effects=new Set,t._x_runEffects=()=>{t._x_effects.forEach(p=>p())}),t._x_effects.add(d),i=()=>{d!==void 0&&(t._x_effects.delete(d),Ae(d))},d},()=>{i()}]}function Ct(t,i){let o=!0,c,d=X(()=>{let p=t();JSON.stringify(p),o?c=p:queueMicrotask(()=>{i(p,c),c=p}),o=!1});return()=>Ae(d)}var Ee=[],be=[],Oe=[];function xe(t){Oe.push(t)}function de(t,i){typeof i=="function"?(t._x_cleanups||(t._x_cleanups=[]),t._x_cleanups.push(i)):(i=t,be.push(i))}function Q(t){Ee.push(t)}function Ve(t,i,o){t._x_attributeCleanups||(t._x_attributeCleanups={}),t._x_attributeCleanups[i]||(t._x_attributeCleanups[i]=[]),t._x_attributeCleanups[i].push(o)}function W(t,i){t._x_attributeCleanups&&Object.entries(t._x_attributeCleanups).forEach(([o,c])=>{(i===void 0||i.includes(o))&&(c.forEach(d=>d()),delete t._x_attributeCleanups[o])})}function ie(t){if(t._x_cleanups)for(;t._x_cleanups.length;)t._x_cleanups.pop()()}var ve=new MutationObserver(We),$e=!1;function me(){ve.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0}),$e=!0}function ue(){Ze(),ve.disconnect(),$e=!1}var ut=[];function Ze(){let t=ve.takeRecords();ut.push(()=>t.length>0&&We(t));let i=ut.length;queueMicrotask(()=>{if(ut.length===i)for(;ut.length>0;)ut.shift()()})}function te(t){if(!$e)return t();ue();let i=t();return me(),i}var k=!1,j=[];function he(){k=!0}function V(){k=!1,We(j),j=[]}function We(t){if(k){j=j.concat(t);return}let i=new Set,o=new Set,c=new Map,d=new Map;for(let p=0;pm.nodeType===1&&i.add(m)),t[p].removedNodes.forEach(m=>m.nodeType===1&&o.add(m))),t[p].type==="attributes")){let m=t[p].target,x=t[p].attributeName,M=t[p].oldValue,Z=()=>{c.has(m)||c.set(m,[]),c.get(m).push({name:x,value:m.getAttribute(x)})},Me=()=>{d.has(m)||d.set(m,[]),d.get(m).push(x)};m.hasAttribute(x)&&M===null?Z():m.hasAttribute(x)?(Me(),Z()):Me()}d.forEach((p,m)=>{W(m,p)}),c.forEach((p,m)=>{Ee.forEach(x=>x(m,p))});for(let p of o)i.has(p)||be.forEach(m=>m(p));i.forEach(p=>{p._x_ignoreSelf=!0,p._x_ignore=!0});for(let p of i)o.has(p)||p.isConnected&&(delete p._x_ignoreSelf,delete p._x_ignore,Oe.forEach(m=>m(p)),p._x_ignore=!0,p._x_ignoreSelf=!0);i.forEach(p=>{delete p._x_ignoreSelf,delete p._x_ignore}),i=null,o=null,c=null,d=null}function pe(t){return ce(q(t))}function $(t,i,o){return t._x_dataStack=[i,...q(o||t)],()=>{t._x_dataStack=t._x_dataStack.filter(c=>c!==i)}}function q(t){return t._x_dataStack?t._x_dataStack:typeof ShadowRoot=="function"&&t instanceof ShadowRoot?q(t.host):t.parentNode?q(t.parentNode):[]}function ce(t){return new Proxy({objects:t},Be)}var Be={ownKeys({objects:t}){return Array.from(new Set(t.flatMap(i=>Object.keys(i))))},has({objects:t},i){return i==Symbol.unscopables?!1:t.some(o=>Object.prototype.hasOwnProperty.call(o,i)||Reflect.has(o,i))},get({objects:t},i,o){return i=="toJSON"?Ce:Reflect.get(t.find(c=>Reflect.has(c,i))||{},i,o)},set({objects:t},i,o,c){const d=t.find(m=>Object.prototype.hasOwnProperty.call(m,i))||t[t.length-1],p=Object.getOwnPropertyDescriptor(d,i);return p!=null&&p.set&&(p!=null&&p.get)?Reflect.set(d,i,o,c):Reflect.set(d,i,o)}};function Ce(){return Reflect.ownKeys(this).reduce((i,o)=>(i[o]=Reflect.get(this,o),i),{})}function ot(t){let i=c=>typeof c=="object"&&!Array.isArray(c)&&c!==null,o=(c,d="")=>{Object.entries(Object.getOwnPropertyDescriptors(c)).forEach(([p,{value:m,enumerable:x}])=>{if(x===!1||m===void 0||typeof m=="object"&&m!==null&&m.__v_skip)return;let M=d===""?p:`${d}.${p}`;typeof m=="object"&&m!==null&&m._x_interceptor?c[p]=m.initialize(t,M,p):i(m)&&m!==c&&!(m instanceof Element)&&o(m,M)})};return o(t)}function it(t,i=()=>{}){let o={initialValue:void 0,_x_interceptor:!0,initialize(c,d,p){return t(this.initialValue,()=>Rt(c,d),m=>Lt(c,d,m),d,p)}};return i(o),c=>{if(typeof c=="object"&&c!==null&&c._x_interceptor){let d=o.initialize.bind(o);o.initialize=(p,m,x)=>{let M=c.initialize(p,m,x);return o.initialValue=M,d(p,m,x)}}else o.initialValue=c;return o}}function Rt(t,i){return i.split(".").reduce((o,c)=>o[c],t)}function Lt(t,i,o){if(typeof i=="string"&&(i=i.split(".")),i.length===1)t[i[0]]=o;else{if(i.length===0)throw error;return t[i[0]]||(t[i[0]]={}),Lt(t[i[0]],i.slice(1),o)}}var lr={};function At(t,i){lr[t]=i}function Wt(t,i){return Object.entries(lr).forEach(([o,c])=>{let d=null;function p(){if(d)return d;{let[m,x]=G(i);return d={interceptor:it,...m},de(i,x),d}}Object.defineProperty(t,`$${o}`,{get(){return c(i,p())},enumerable:!1})}),t}function ur(t,i,o,...c){try{return o(...c)}catch(d){er(d,t,i)}}function er(t,i,o=void 0){t=Object.assign(t??{message:"No error message given."},{el:i,expression:o}),console.warn(`Alpine Expression Error: ${t.message}
+
+${o?'Expression: "'+o+`"
+
+`:""}`,i),setTimeout(()=>{throw t},0)}var cr=!0;function An(t){let i=cr;cr=!1;let o=t();return cr=i,o}function Kt(t,i,o={}){let c;return bt(t,i)(d=>c=d,o),c}function bt(...t){return Tn(...t)}var Tn=Qr;function Pn(t){Tn=t}function Qr(t,i){let o={};Wt(o,t);let c=[o,...q(t)],d=typeof i=="function"?yi(c,i):_i(c,i,t);return ur.bind(null,t,i,d)}function yi(t,i){return(o=()=>{},{scope:c={},params:d=[]}={})=>{let p=i.apply(ce([c,...t]),d);Cr(o,p)}}var Zr={};function bi(t,i){if(Zr[t])return Zr[t];let o=Object.getPrototypeOf(async function(){}).constructor,c=/^[\n\s]*if.*\(.*\)/.test(t.trim())||/^(let|const)\s/.test(t.trim())?`(async()=>{ ${t} })()`:t,p=(()=>{try{let m=new o(["__self","scope"],`with (scope) { __self.result = ${c} }; __self.finished = true; return __self.result;`);return Object.defineProperty(m,"name",{value:`[Alpine] ${t}`}),m}catch(m){return er(m,i,t),Promise.resolve()}})();return Zr[t]=p,p}function _i(t,i,o){let c=bi(i,o);return(d=()=>{},{scope:p={},params:m=[]}={})=>{c.result=void 0,c.finished=!1;let x=ce([p,...t]);if(typeof c=="function"){let M=c(c,x).catch(Z=>er(Z,o,i));c.finished?(Cr(d,c.result,x,m,o),c.result=void 0):M.then(Z=>{Cr(d,Z,x,m,o)}).catch(Z=>er(Z,o,i)).finally(()=>c.result=void 0)}}}function Cr(t,i,o,c,d){if(cr&&typeof i=="function"){let p=i.apply(o,c);p instanceof Promise?p.then(m=>Cr(t,m,o,c)).catch(m=>er(m,d,i)):t(p)}else typeof i=="object"&&i instanceof Promise?i.then(p=>t(p)):t(i)}var en="x-";function Jt(t=""){return en+t}function Rn(t){en=t}var fr={};function st(t,i){return fr[t]=i,{before(o){if(!fr[o]){console.warn(String.raw`Cannot find directive \`${o}\`. \`${t}\` will use the default order of execution`);return}const c=Ke.indexOf(o);Ke.splice(c>=0?c:Ke.indexOf("DEFAULT"),0,t)}}}function f(t){return Object.keys(fr).includes(t)}function h(t,i,o){if(i=Array.from(i),t._x_virtualDirectives){let p=Object.entries(t._x_virtualDirectives).map(([x,M])=>({name:x,value:M})),m=w(p);p=p.map(x=>m.find(M=>M.name===x.name)?{name:`x-bind:${x.name}`,value:`"${x.value}"`}:x),i=i.concat(p)}let c={};return i.map(Te((p,m)=>c[p]=m)).filter(Re).map(rt(c,o)).sort(ct).map(p=>oe(t,p))}function w(t){return Array.from(t).map(Te()).filter(i=>!Re(i))}var E=!1,P=new Map,F=Symbol();function U(t){E=!0;let i=Symbol();F=i,P.set(i,[]);let o=()=>{for(;P.get(i).length;)P.get(i).shift()();P.delete(i)},c=()=>{E=!1,o()};t(o),c()}function G(t){let i=[],o=x=>i.push(x),[c,d]=yt(t);return i.push(d),[{Alpine:on,effect:c,cleanup:o,evaluateLater:bt.bind(bt,t),evaluate:Kt.bind(Kt,t)},()=>i.forEach(x=>x())]}function oe(t,i){let o=()=>{},c=fr[i.type]||o,[d,p]=G(t);Ve(t,i.original,p);let m=()=>{t._x_ignore||t._x_ignoreSelf||(c.inline&&c.inline(t,i,d),c=c.bind(c,t,i,d),E?P.get(F).push(c):c())};return m.runCleanups=p,m}var se=(t,i)=>({name:o,value:c})=>(o.startsWith(t)&&(o=o.replace(t,i)),{name:o,value:c}),ke=t=>t;function Te(t=()=>{}){return({name:i,value:o})=>{let{name:c,value:d}=Fe.reduce((p,m)=>m(p),{name:i,value:o});return c!==i&&t(c,i),{name:c,value:d}}}var Fe=[];function _e(t){Fe.push(t)}function Re({name:t}){return je().test(t)}var je=()=>new RegExp(`^${en}([^:^.]+)\\b`);function rt(t,i){return({name:o,value:c})=>{let d=o.match(je()),p=o.match(/:([a-zA-Z0-9\-_:]+)/),m=o.match(/\.[^.\]]+(?=[^\]]*$)/g)||[],x=i||t[o]||o;return{type:d?d[1]:null,value:p?p[1]:null,modifiers:m.map(M=>M.replace(".","")),expression:c,original:x}}}var Ie="DEFAULT",Ke=["ignore","ref","data","id","anchor","bind","init","for","model","modelable","transition","show","if",Ie,"teleport"];function ct(t,i){let o=Ke.indexOf(t.type)===-1?Ie:t.type,c=Ke.indexOf(i.type)===-1?Ie:i.type;return Ke.indexOf(o)-Ke.indexOf(c)}function mt(t,i,o={}){t.dispatchEvent(new CustomEvent(i,{detail:o,bubbles:!0,composed:!0,cancelable:!0}))}function Xe(t,i){if(typeof ShadowRoot=="function"&&t instanceof ShadowRoot){Array.from(t.children).forEach(d=>Xe(d,i));return}let o=!1;if(i(t,()=>o=!0),o)return;let c=t.firstElementChild;for(;c;)Xe(c,i),c=c.nextElementSibling}function ft(t,...i){console.warn(`Alpine Warning: ${t}`,...i)}var dr=!1;function pr(){dr&&ft("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."),dr=!0,document.body||ft("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's `