diff --git a/.env.example b/.env.example index 63f81969dae6..2a6eb900debe 100644 --- a/.env.example +++ b/.env.example @@ -48,6 +48,7 @@ REQUIRE_HTTPS=false GOOGLE_MAPS_API_KEY= API_SECRET=superdoopersecrethere ERROR_EMAIL= +TRUSTED_PROXIES= NINJA_ENVIRONMENT=selfhost diff --git a/app/Console/Commands/CreateTestData.php b/app/Console/Commands/CreateTestData.php index 412ae150e6a5..190ab93d4e5a 100644 --- a/app/Console/Commands/CreateTestData.php +++ b/app/Console/Commands/CreateTestData.php @@ -27,12 +27,19 @@ use App\Helpers\Invoice\InvoiceSum; use App\Jobs\Quote\CreateQuoteInvitations; use App\Listeners\Credit\CreateCreditInvitation; use App\Listeners\Invoice\CreateInvoiceInvitation; +use App\Models\Client; +use App\Models\ClientContact; use App\Models\CompanyToken; use App\Models\Country; +use App\Models\Expense; use App\Models\Payment; use App\Models\PaymentType; use App\Models\Product; +use App\Models\Project; +use App\Models\Task; use App\Models\User; +use App\Models\Vendor; +use App\Models\VendorContact; use App\Repositories\InvoiceRepository; use App\Utils\Ninja; use App\Utils\Traits\GeneratesCounter; @@ -93,8 +100,8 @@ class CreateTestData extends Command { $this->info('Creating Small Account and Company'); - $account = factory(\App\Models\Account::class)->create(); - $company = factory(\App\Models\Company::class)->create([ + $account = Account::factory()->create(); + $company = Company::factory()->create([ 'account_id' => $account->id, 'slack_webhook_url' => config('ninja.notification.slack'), ]); @@ -105,7 +112,7 @@ class CreateTestData extends Command $user = User::whereEmail('small@example.com')->first(); if (! $user) { - $user = factory(\App\Models\User::class)->create([ + $user = User::factory()->create([ 'account_id' => $account->id, 'email' => 'small@example.com', 'confirmation_code' => $this->createDbHash(config('database.default')), @@ -132,7 +139,7 @@ class CreateTestData extends Command 'settings' => null, ]); - factory(\App\Models\Product::class, 50)->create([ + Product::factory()->count(50)->create([ 'user_id' => $user->id, 'company_id' => $company->id, ]); @@ -188,8 +195,8 @@ class CreateTestData extends Command { $this->info('Creating Medium Account and Company'); - $account = factory(\App\Models\Account::class)->create(); - $company = factory(\App\Models\Company::class)->create([ + $account = Account::factory()->create(); + $company = Company::factory()->create([ 'account_id' => $account->id, 'slack_webhook_url' => config('ninja.notification.slack'), ]); @@ -200,7 +207,7 @@ class CreateTestData extends Command $user = User::whereEmail('medium@example.com')->first(); if (! $user) { - $user = factory(\App\Models\User::class)->create([ + $user = User::factory()->create([ 'account_id' => $account->id, 'email' => 'medium@example.com', 'confirmation_code' => $this->createDbHash(config('database.default')), @@ -226,7 +233,7 @@ class CreateTestData extends Command 'settings' => null, ]); - factory(\App\Models\Product::class, 50)->create([ + Product::factory()->count(50)->create([ 'user_id' => $user->id, 'company_id' => $company->id, ]); @@ -284,8 +291,8 @@ class CreateTestData extends Command { $this->info('Creating Large Account and Company'); - $account = factory(\App\Models\Account::class)->create(); - $company = factory(\App\Models\Company::class)->create([ + $account = Account::factory()->create(); + $company = Company::factory()->create([ 'account_id' => $account->id, 'slack_webhook_url' => config('ninja.notification.slack'), 'is_large' => true, @@ -297,7 +304,7 @@ class CreateTestData extends Command $user = User::whereEmail('large@example.com')->first(); if (! $user) { - $user = factory(\App\Models\User::class)->create([ + $user = User::factory()->create([ 'account_id' => $account->id, 'email' => 'large@example.com', 'confirmation_code' => $this->createDbHash(config('database.default')), @@ -323,7 +330,7 @@ class CreateTestData extends Command 'settings' => null, ]); - factory(\App\Models\Product::class, 15000)->create([ + Product::factory()->count(15000)->create([ 'user_id' => $user->id, 'company_id' => $company->id, ]); @@ -383,19 +390,19 @@ class CreateTestData extends Command // dispatch(function () use ($company, $user) { // }); - $client = factory(\App\Models\Client::class)->create([ + $client = Client::factory()->create([ 'user_id' => $user->id, 'company_id' => $company->id, ]); - factory(\App\Models\ClientContact::class, 1)->create([ + ClientContact::factory()->create([ 'user_id' => $user->id, 'client_id' => $client->id, 'company_id' => $company->id, 'is_primary' => 1, ]); - factory(\App\Models\ClientContact::class, rand(1, 5))->create([ + ClientContact::factory()->count(rand(1, 5))->create([ 'user_id' => $user->id, 'client_id' => $client->id, 'company_id' => $company->id, @@ -415,7 +422,7 @@ class CreateTestData extends Command private function createExpense($client) { - factory(\App\Models\Expense::class, rand(1, 5))->create([ + Expense::factory()->count(rand(1, 5))->create([ 'user_id' => $client->user->id, 'client_id' => $client->id, 'company_id' => $client->company->id, @@ -424,19 +431,19 @@ class CreateTestData extends Command private function createVendor($client) { - $vendor = factory(\App\Models\Vendor::class)->create([ + $vendor = Vendor::factory()->create([ 'user_id' => $client->user->id, 'company_id' => $client->company->id, ]); - factory(\App\Models\VendorContact::class, 1)->create([ + VendorContact::factory()->create([ 'user_id' => $client->user->id, 'vendor_id' => $vendor->id, 'company_id' => $client->company->id, 'is_primary' => 1, ]); - factory(\App\Models\VendorContact::class, rand(1, 5))->create([ + VendorContact::factory()->count(rand(1, 5))->create([ 'user_id' => $client->user->id, 'vendor_id' => $vendor->id, 'company_id' => $client->company->id, @@ -446,7 +453,7 @@ class CreateTestData extends Command private function createTask($client) { - $vendor = factory(\App\Models\Task::class)->create([ + $vendor = Task::factory()->create([ 'user_id' => $client->user->id, 'company_id' => $client->company->id, ]); @@ -454,7 +461,7 @@ class CreateTestData extends Command private function createProject($client) { - $vendor = factory(\App\Models\Project::class)->create([ + $vendor = Project::factory()->create([ 'user_id' => $client->user->id, 'company_id' => $client->company->id, ]); @@ -520,7 +527,7 @@ class CreateTestData extends Command // } $faker = \Faker\Factory::create(); - $credit = factory(\App\Models\Credit::class)->create(['user_id' => $client->user->id, 'company_id' => $client->company->id, 'client_id' => $client->id]); + $credit = Credit::factory()->create(['user_id' => $client->user->id, 'company_id' => $client->company->id, 'client_id' => $client->id]); $dateable = Carbon::now()->subDays(rand(0, 90)); $credit->date = $dateable; @@ -564,7 +571,7 @@ class CreateTestData extends Command $faker = \Faker\Factory::create(); //$quote = QuoteFactory::create($client->company->id, $client->user->id);//stub the company and user_id - $quote = factory(\App\Models\Quote::class)->create(['user_id' => $client->user->id, 'company_id' => $client->company->id, 'client_id' => $client->id]); + $quote = Quote::factory()->create(['user_id' => $client->user->id, 'company_id' => $client->company->id, 'client_id' => $client->id]); $quote->date = $faker->date(); $quote->client_id = $client->id; diff --git a/app/Console/Commands/DemoMode.php b/app/Console/Commands/DemoMode.php index 2b634a613af8..f58b9d5bfdd6 100644 --- a/app/Console/Commands/DemoMode.php +++ b/app/Console/Commands/DemoMode.php @@ -18,10 +18,21 @@ use App\Factory\InvoiceItemFactory; use App\Helpers\Invoice\InvoiceSum; use App\Jobs\Ninja\CompanySizeCheck; use App\Jobs\Util\VersionCheck; +use App\Models\Account; +use App\Models\Client; +use App\Models\ClientContact; +use App\Models\Company; use App\Models\CompanyToken; use App\Models\Country; +use App\Models\Credit; +use App\Models\Expense; use App\Models\Product; +use App\Models\Project; +use App\Models\Quote; +use App\Models\Task; use App\Models\User; +use App\Models\Vendor; +use App\Models\VendorContact; use App\Repositories\InvoiceRepository; use App\Utils\Ninja; use App\Utils\Traits\GeneratesCounter; @@ -30,8 +41,8 @@ use Carbon\Carbon; use Composer\Composer; use Composer\Console\Application; use Composer\Factory; -use Composer\Installer; use Composer\IO\NullIO; +use Composer\Installer; use Illuminate\Console\Command; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Cache; @@ -125,8 +136,8 @@ class DemoMode extends Command $this->info('Creating Small Account and Company'); - $account = factory(\App\Models\Account::class)->create(); - $company = factory(\App\Models\Company::class)->create([ + $account = Account::factory()->create(); + $company = Company::factory()->create([ 'account_id' => $account->id, 'slack_webhook_url' => config('ninja.notification.slack'), 'enabled_modules' => 32767, @@ -155,7 +166,7 @@ class DemoMode extends Command $user = User::whereEmail('small@example.com')->first(); if (! $user) { - $user = factory(\App\Models\User::class)->create([ + $user = User::factory()->create([ 'account_id' => $account->id, 'email' => 'small@example.com', 'confirmation_code' => $this->createDbHash(config('database.default')), @@ -185,7 +196,7 @@ class DemoMode extends Command $u2 = User::where('email', 'demo@invoiceninja.com')->first(); if (! $u2) { - $u2 = factory(\App\Models\User::class)->create([ + $u2 = User::factory()->create([ 'email' => 'demo@invoiceninja.com', 'password' => Hash::make('demo'), 'account_id' => $account->id, @@ -211,7 +222,7 @@ class DemoMode extends Command ]); } - factory(\App\Models\Product::class, 50)->create([ + Product::factory()->count(50)->create([ 'user_id' => $user->id, 'company_id' => $company->id, ]); @@ -277,19 +288,19 @@ class DemoMode extends Command // dispatch(function () use ($company, $user) { // }); - $client = factory(\App\Models\Client::class)->create([ + $client = Client::factory()->create([ 'user_id' => $user->id, 'company_id' => $company->id, ]); - factory(\App\Models\ClientContact::class)->create([ + ClientContact::factory()->create([ 'user_id' => $user->id, 'client_id' => $client->id, 'company_id' => $company->id, 'is_primary' => 1, ]); - factory(\App\Models\ClientContact::class, rand(1, 5))->create([ + ClientContact::factory()->count(rand(1,5))->create([ 'user_id' => $user->id, 'client_id' => $client->id, 'company_id' => $company->id, @@ -311,7 +322,7 @@ class DemoMode extends Command private function createExpense($client) { - factory(\App\Models\Expense::class, rand(1, 5))->create([ + Expense::factory()->count(rand(1,5))->create([ 'user_id' => $client->user_id, 'client_id' => $client->id, 'company_id' => $client->company_id, @@ -320,19 +331,19 @@ class DemoMode extends Command private function createVendor($client, $assigned_user_id = null) { - $vendor = factory(\App\Models\Vendor::class)->create([ + $vendor = Vendor::factory()->create([ 'user_id' => $client->user_id, 'company_id' => $client->company_id, ]); - factory(\App\Models\VendorContact::class)->create([ + VendorContact::factory()->create([ 'user_id' => $client->user->id, 'vendor_id' => $vendor->id, 'company_id' => $client->company_id, 'is_primary' => 1, ]); - factory(\App\Models\VendorContact::class, rand(1, 5))->create([ + VendorContact::factory()->count(rand(1,5))->create([ 'user_id' => $client->user->id, 'vendor_id' => $vendor->id, 'company_id' => $client->company_id, @@ -342,7 +353,7 @@ class DemoMode extends Command private function createTask($client, $assigned_user_id = null) { - $vendor = factory(\App\Models\Task::class)->create([ + $vendor = Task::factory()->create([ 'user_id' => $client->user->id, 'company_id' => $client->company_id, ]); @@ -350,7 +361,7 @@ class DemoMode extends Command private function createProject($client, $assigned_user_id = null) { - $vendor = factory(\App\Models\Project::class)->create([ + $vendor = Project::factory()->create([ 'user_id' => $client->user->id, 'company_id' => $client->company_id, ]); @@ -430,7 +441,7 @@ class DemoMode extends Command // } $faker = \Faker\Factory::create(); - $credit = factory(\App\Models\Credit::class)->create(['user_id' => $client->user->id, 'company_id' => $client->company->id, 'client_id' => $client->id]); + $credit = Credit::factory()->create(['user_id' => $client->user->id, 'company_id' => $client->company->id, 'client_id' => $client->id]); if ((bool) rand(0, 1)) { $dateable = Carbon::now()->subDays(rand(0, 90)); @@ -478,7 +489,7 @@ class DemoMode extends Command { $faker = \Faker\Factory::create(); - $quote = factory(\App\Models\Quote::class)->create(['user_id' => $client->user->id, 'company_id' => $client->company_id, 'client_id' => $client->id]); + $quote = Quote::factory()->create(['user_id' => $client->user->id, 'company_id' => $client->company_id, 'client_id' => $client->id]); if ((bool) rand(0, 1)) { $dateable = Carbon::now()->subDays(rand(1, 30)); diff --git a/app/Console/Commands/ImportMigrations.php b/app/Console/Commands/ImportMigrations.php index d11baaeb3633..c9c891146cd3 100644 --- a/app/Console/Commands/ImportMigrations.php +++ b/app/Console/Commands/ImportMigrations.php @@ -78,7 +78,7 @@ class ImportMigrations extends Command $account = $this->getAccount(); $company = $this->getCompany($account); - $user = factory(\App\Models\User::class)->create([ + $user = User::factory()->create([ 'account_id' => $account->id, 'email' => $this->faker->email, 'confirmation_code' => $this->createDbHash(config('database.default')), @@ -107,7 +107,7 @@ class ImportMigrations extends Command public function getAccount(): Account { - return factory(\App\Models\Account::class)->create(); + return Account::factory()->create(); } public function getCompany(Account $account): Company diff --git a/app/Console/Commands/SendTestEmails.php b/app/Console/Commands/SendTestEmails.php index 514cda83f083..5890da2d04d6 100644 --- a/app/Console/Commands/SendTestEmails.php +++ b/app/Console/Commands/SendTestEmails.php @@ -20,8 +20,10 @@ use App\Factory\InvoiceInvitationFactory; use App\Helpers\Email\InvoiceEmail; use App\Jobs\Invoice\CreateInvoicePdf; use App\Mail\TemplateEmail; +use App\Models\Account; use App\Models\Client; use App\Models\ClientContact; +use App\Models\Company; use App\Models\Invoice; use App\Models\User; use Illuminate\Console\Command; @@ -80,9 +82,10 @@ class SendTestEmails extends Command $user = User::whereEmail('user@example.com')->first(); if (! $user) { - $account = factory(\App\Models\Account::class)->create(); + + $account = Account::factory()->create(); - $user = factory(\App\Models\User::class)->create([ + $user = User::factory()->create([ 'account_id' => $account->id, 'confirmation_code' => '123', 'email' => $faker->safeEmail, @@ -90,7 +93,7 @@ class SendTestEmails extends Command 'last_name' => 'Doe', ]); - $company = factory(\App\Models\Company::class)->create([ + $company = Company::factory()->create([ 'account_id' => $account->id, ]); @@ -115,7 +118,7 @@ class SendTestEmails extends Command $client = ClientFactory::create($company->id, $user->id); $client->save(); - factory(\App\Models\ClientContact::class, 1)->create([ + ClientContact::factory()->create([ 'user_id' => $user->id, 'client_id' => $client->id, 'company_id' => $company->id, @@ -124,7 +127,7 @@ class SendTestEmails extends Command 'email' => $faker->safeEmail, ]); - factory(\App\Models\ClientContact::class, 1)->create([ + ClientContact::factory()->create([ 'user_id' => $user->id, 'client_id' => $client->id, 'company_id' => $company->id, diff --git a/app/Console/Commands/TestData/CreateTestCreditJob.php b/app/Console/Commands/TestData/CreateTestCreditJob.php index 4faecae2eac3..225fc5e6f819 100644 --- a/app/Console/Commands/TestData/CreateTestCreditJob.php +++ b/app/Console/Commands/TestData/CreateTestCreditJob.php @@ -56,7 +56,7 @@ class CreateTestCreditJob implements ShouldQueue { $faker = \Faker\Factory::create(); - $credit = factory(\App\Models\Credit::class)->create(['user_id' => $this->client->user->id, 'company_id' => $this->client->company->id, 'client_id' => $this->client->id]); + $credit = Credit::factory()->create(['user_id' => $this->client->user->id, 'company_id' => $this->client->company->id, 'client_id' => $this->client->id]); //$invoice = InvoiceFactory::create($this->client->company->id, $this->client->user->id);//stub the company and user_id //$invoice->client_id = $this->client->id; diff --git a/app/Console/Commands/TestData/CreateTestQuoteJob.php b/app/Console/Commands/TestData/CreateTestQuoteJob.php index 0fee29ca3477..24e91e5acf92 100644 --- a/app/Console/Commands/TestData/CreateTestQuoteJob.php +++ b/app/Console/Commands/TestData/CreateTestQuoteJob.php @@ -55,7 +55,7 @@ class CreateTestQuoteJob implements ShouldQueue { $faker = \Faker\Factory::create(); - $quote = factory(\App\Models\Quote::class)->create(['user_id' => $this->client->user->id, 'company_id' => $this->client->company->id, 'client_id' => $this->client->id]); + $quote = Quote::factory()->create(['user_id' => $this->client->user->id, 'company_id' => $this->client->company->id, 'client_id' => $this->client->id]); $quote->date = $faker->date(); $quote->line_items = $this->buildLineItems(rand(1, 10)); diff --git a/app/DataMapper/CompanySettings.php b/app/DataMapper/CompanySettings.php index cb409a45f1d9..ca48a17faf4b 100644 --- a/app/DataMapper/CompanySettings.php +++ b/app/DataMapper/CompanySettings.php @@ -585,11 +585,11 @@ class CompanySettings extends BaseSettings '$quote.total', ], 'credit_details' => [ - '$credit.credit_number', + '$credit.number', '$credit.po_number', - '$credit.credit_date', - '$credit.credit_balance', - '$credit.credit_amount', + '$credit.date', + '$credit.balance', + '$credit.total', ], 'product_columns' => [ '$product.product_key', diff --git a/app/Designs/Designer.php b/app/Designs/Designer.php index 3db75dd3a4a3..14510e3777a8 100644 --- a/app/Designs/Designer.php +++ b/app/Designs/Designer.php @@ -332,11 +332,11 @@ class Designer private function creditDetails(Company $company) { $data = [ - '$credit.credit_number' => '$credit.number_label$credit.number', + '$credit.number' => '$credit.number_label$credit.number', '$credit.po_number' => '$credit.po_number_label$credit.po_number', - '$credit.credit_date' => '$credit.date_label$credit.date', - '$credit.credit_balance' => '$credit.balance_label$credit.balance', - '$credit.credit_amount' => '$credit.amount_label$credit.amount', + '$credit.date' => '$credit.date_label$credit.date', + '$credit.balance' => '$credit.balance_label$credit.balance', + '$credit.total' => '$credit.total_label$credit.total', '$credit.partial_due' => '$credit.partial_due_label$credit.partial_due', '$credit.custom1' => '$credit.custom1_label$credit.custom1', '$credit.custom2' => '$credit.custom2_label$credit.custom2', diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php index 32302359ad29..cdbcfffb361e 100644 --- a/app/Http/Controllers/InvoiceController.php +++ b/app/Http/Controllers/InvoiceController.php @@ -32,6 +32,7 @@ use App\Jobs\Invoice\CreateInvoicePdf; use App\Jobs\Invoice\EmailInvoice; use App\Jobs\Invoice\StoreInvoice; use App\Jobs\Invoice\ZipInvoices; +use App\Jobs\Util\UnlinkFile; use App\Models\Client; use App\Models\Invoice; use App\Models\InvoiceInvitation; @@ -391,6 +392,8 @@ class InvoiceController extends BaseController $invoice = $this->invoice_repo->save($request->all(), $invoice); + UnlinkFile::dispatchNow(config('filesystems.default'),$invoice->client->invoice_filepath().$invoice->number.'.pdf'); + event(new InvoiceWasUpdated($invoice, $invoice->company, Ninja::eventVars())); return $this->itemResponse($invoice); diff --git a/app/Http/Controllers/PreviewController.php b/app/Http/Controllers/PreviewController.php index d30a8958e40e..c0a2d85a9b14 100644 --- a/app/Http/Controllers/PreviewController.php +++ b/app/Http/Controllers/PreviewController.php @@ -132,12 +132,12 @@ class PreviewController extends BaseController { DB::beginTransaction(); - $client = factory(\App\Models\Client::class)->create([ + $client = Client::factory()->create([ 'user_id' => auth()->user()->id, 'company_id' => auth()->user()->company()->id, ]); - $contact = factory(\App\Models\ClientContact::class)->create([ + $contact = ClientContact::factory()->create([ 'user_id' => auth()->user()->id, 'company_id' => auth()->user()->company()->id, 'client_id' => $client->id, @@ -145,13 +145,13 @@ class PreviewController extends BaseController 'send_email' => true, ]); - $invoice = factory(\App\Models\Invoice::class)->create([ + $invoice = Invoice::factory()->create([ 'user_id' => auth()->user()->id, 'company_id' => auth()->user()->company()->id, 'client_id' => $client->id, ]); - $invitation = factory(\App\Models\InvoiceInvitation::class)->create([ + $invitation = InvoiceInvitation::factory()->create([ 'user_id' => auth()->user()->id, 'company_id' => auth()->user()->company()->id, 'invoice_id' => $invoice->id, diff --git a/app/Http/Middleware/ContactKeyLogin.php b/app/Http/Middleware/ContactKeyLogin.php index 120c03d730db..b718f775ae46 100644 --- a/app/Http/Middleware/ContactKeyLogin.php +++ b/app/Http/Middleware/ContactKeyLogin.php @@ -12,16 +12,21 @@ namespace App\Http\Middleware; use App\Libraries\MultiDB; +use App\Models\Client; use App\Models\ClientContact; use App\Models\CompanyToken; -use Closure; use Auth; +use Closure; class ContactKeyLogin { /** * Handle an incoming request. * + * Sets a contact LOGGED IN if an appropriate client_hash is provided as a query parameter + * OR + * If the contact_key is provided in the route + * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed @@ -47,6 +52,25 @@ class ContactKeyLogin return redirect()->to('client/dashboard'); } + } + else if($request->has('client_hash') && config('ninja.db.multi_db_enabled')){ + + if (MultiDB::findAndSetDbByClientHash($request->input('client_hash'))) { + + $client = Client::where('client_hash', $request->input('client_hash'))->first(); + Auth::guard('contact')->login($client->primary_contact()->first(), true); + return redirect()->to('client/dashboard'); + + } + + } + else if($request->has('client_hash')){ + + if($client = Client::where('client_hash', $request->input('client_hash'))->first()){ + Auth::guard('contact')->login($client->primary_contact()->first(), true); + return redirect()->to('client/dashboard'); + } + } return $next($request); diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php index d86aec22a8e8..82fd6890763e 100644 --- a/app/Http/Middleware/TrustProxies.php +++ b/app/Http/Middleware/TrustProxies.php @@ -13,6 +13,7 @@ namespace App\Http\Middleware; use Fideloper\Proxy\TrustProxies as Middleware; use Illuminate\Http\Request; +use Illuminate\Contracts\Config\Repository; class TrustProxies extends Middleware { @@ -29,4 +30,18 @@ class TrustProxies extends Middleware * @var int */ protected $headers = Request::HEADER_X_FORWARDED_ALL; + + /* + * Instantiate trusted proxies middleware + * + * @param \Illuminate\Contracts\Config\Repository $config + */ + public function __construct(Repository $config) { + + parent::__construct($config); + + if (config('ninja.trusted_proxies')) + $this->proxies = config('ninja.trusted_proxies'); + + } } diff --git a/app/Http/Requests/RecurringInvoice/StoreRecurringInvoiceRequest.php b/app/Http/Requests/RecurringInvoice/StoreRecurringInvoiceRequest.php index 3e290847fed3..f92ef7dd3dd8 100644 --- a/app/Http/Requests/RecurringInvoice/StoreRecurringInvoiceRequest.php +++ b/app/Http/Requests/RecurringInvoice/StoreRecurringInvoiceRequest.php @@ -100,7 +100,7 @@ class StoreRecurringInvoiceRequest extends Request if(isset($input['auto_bill'])) $input['auto_bill_enabled'] = $this->setAutoBillFlag($input['auto_bill']); else{ - $client = Client::find($this->decodePrimaryKey($input['client_id'])); + $client = Client::find($input['client_id']); $input['auto_bill'] = $client->getSetting('auto_bill'); } diff --git a/app/Jobs/Util/Import.php b/app/Jobs/Util/Import.php index 414a268a5ad1..f4b667d2133a 100644 --- a/app/Jobs/Util/Import.php +++ b/app/Jobs/Util/Import.php @@ -130,7 +130,7 @@ class Import implements ShouldQueue public $timeout = 86400; - public $retryAfter = 86430; + public $backoff = 86430; /** * Create a new job instance. diff --git a/app/Jobs/Util/StartMigration.php b/app/Jobs/Util/StartMigration.php index 67f2f348500c..e17bedc3de4d 100644 --- a/app/Jobs/Util/StartMigration.php +++ b/app/Jobs/Util/StartMigration.php @@ -54,7 +54,7 @@ class StartMigration implements ShouldQueue public $timeout = 86400; - public $retryAfter = 86430; + public $backoff = 86430; public function __construct($filepath, User $user, Company $company) { diff --git a/app/Libraries/MultiDB.php b/app/Libraries/MultiDB.php index 7aebf248f026..ad997d15c22c 100644 --- a/app/Libraries/MultiDB.php +++ b/app/Libraries/MultiDB.php @@ -11,6 +11,7 @@ namespace App\Libraries; +use App\Models\Client; use App\Models\ClientContact; use App\Models\Company; use App\Models\CompanyToken; @@ -200,7 +201,6 @@ class MultiDB foreach (self::$dbs as $db) { if ($client_contact = ClientContact::on($db)->where('contact_key', $contact_key)->first()) { self::setDb($client_contact->company->db); - return true; } } @@ -208,6 +208,17 @@ class MultiDB return false; } + public static function findAndSetDbByClientHash($client_hash) :bool + { + foreach (self::$dbs as $db) { + if ($client = Client::on($db)->where('client_hash', $client_hash)->first()) { + self::setDb($client->company->db); + return true; + } + } + + return false; + } public static function findAndSetDbByDomain($subdomain) :bool { diff --git a/app/Listeners/User/DeletedUserActivity.php b/app/Listeners/User/DeletedUserActivity.php index 25e567fe1754..d5261f260350 100644 --- a/app/Listeners/User/DeletedUserActivity.php +++ b/app/Listeners/User/DeletedUserActivity.php @@ -48,7 +48,7 @@ class DeletedUserActivity implements ShouldQueue $fields = new \stdClass; - if (auth()->user()->id) { + if (auth()->check()) { $fields->user_id = auth()->user()->id; } else { $fields->user_id = $event->user->id; diff --git a/app/Mail/TemplateEmail.php b/app/Mail/TemplateEmail.php index 2a4e42aabef3..f8e1a1079a77 100644 --- a/app/Mail/TemplateEmail.php +++ b/app/Mail/TemplateEmail.php @@ -70,6 +70,7 @@ class TemplateEmail extends Mailable 'signature' => $settings->email_signature, 'settings' => $settings, 'company' => $company, + 'whitelabel' => $this->client->user->account->isPaid() ? true : false, ]); //conditionally attach files diff --git a/app/Models/BaseModel.php b/app/Models/BaseModel.php index 4168182315fb..d6ea195907cc 100644 --- a/app/Models/BaseModel.php +++ b/app/Models/BaseModel.php @@ -24,12 +24,14 @@ use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFoundExceptio use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Log; +use Illuminate\Database\Eloquent\Factories\HasFactory; class BaseModel extends Model { use MakesHash; use UserSessionAttributes; - + use HasFactory; + //todo customise names of archived_at / updated_at columns ///const CREATED_AT = 'creation_date'; //const UPDATED_AT = 'last_update'; diff --git a/app/Models/ClientContact.php b/app/Models/ClientContact.php index b6403d967210..022649b94b98 100644 --- a/app/Models/ClientContact.php +++ b/app/Models/ClientContact.php @@ -14,12 +14,13 @@ namespace App\Models; use App\Models\Company; use App\Models\Language; use App\Models\User; -use App\Notifications\ClientContactResetPassword; use App\Notifications\ClientContactResetPassword as ResetPasswordNotification; +use App\Notifications\ClientContactResetPassword; use App\Utils\Traits\MakesHash; use Hashids\Hashids; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Contracts\Translation\HasLocalePreference; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; @@ -33,7 +34,8 @@ class ClientContact extends Authenticatable implements HasLocalePreference use MakesHash; use PresentableTrait; use SoftDeletes; - + use HasFactory; + /* Used to authenticate a contact */ protected $guard = 'contact'; @@ -198,4 +200,20 @@ class ClientContact extends Authenticatable implements HasLocalePreference return asset('images/svg/user.svg'); } + + /** + * Provides a convenience login click for contacts to bypass the + * contact authentication layer + * + * @return string URL + */ + public function getLoginLink() + { + + $domain = isset($this->company->portal_domain) ?: $this->company->domain(); + + return $domain . 'client/key_login/' . $this->contact_key; + + } + } diff --git a/app/Models/Company.php b/app/Models/Company.php index 54b9c7d7f928..176c6139a651 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -426,7 +426,7 @@ class Company extends BaseModel public function domain() { if (Ninja::isNinja()) { - return $this->subdomain.config('ninja.app_domain'); + return $this->subdomain . config('ninja.app_domain'); } return config('ninja.app_url'); diff --git a/app/Models/Gateway.php b/app/Models/Gateway.php index f6673e793494..f658e84fa15a 100644 --- a/app/Models/Gateway.php +++ b/app/Models/Gateway.php @@ -72,13 +72,15 @@ class Gateway extends StaticModel $link = 'https://dashboard.stripe.com/account/apikeys'; } - $key = 'texts.gateway_help_'.$this->id; - $str = trans($key, [ - 'link' => "Click here", - 'complete_link' => url('/complete'), - ]); + // $key = 'texts.gateway_help_'.$this->id; + // $str = trans($key, [ + // 'link' => "Click here", + // 'complete_link' => url('/complete'), + // ]); - return $key != $str ? $str : ''; + return $link; + + //return $key != $str ? $str : ''; } } diff --git a/app/Models/User.php b/app/Models/User.php index 0e0df23ca4ae..dd2b77a9cbe0 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -22,6 +22,7 @@ use App\Utils\Traits\UserSessionAttributes; use App\Utils\Traits\UserSettings; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Contracts\Translation\HasLocalePreference; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; @@ -40,7 +41,8 @@ class User extends Authenticatable implements MustVerifyEmail use UserSettings; use Filterable; use \Staudenmeir\EloquentHasManyDeep\HasRelationships; - + use HasFactory; + protected $guard = 'user'; protected $dates = ['deleted_at']; diff --git a/app/Models/VendorContact.php b/app/Models/VendorContact.php index 7240059df922..a37d1b4b6d6e 100644 --- a/app/Models/VendorContact.php +++ b/app/Models/VendorContact.php @@ -14,12 +14,13 @@ namespace App\Models; use App\Models\Company; use App\Models\Language; use App\Models\User; -use App\Notifications\ClientContactResetPassword; use App\Notifications\ClientContactResetPassword as ResetPasswordNotification; +use App\Notifications\ClientContactResetPassword; use App\Utils\Traits\MakesHash; use Hashids\Hashids; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Contracts\Translation\HasLocalePreference; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; @@ -33,6 +34,7 @@ class VendorContact extends Authenticatable implements HasLocalePreference use MakesHash; use PresentableTrait; use SoftDeletes; + use HasFactory; /* Used to authenticate a vendor */ protected $guard = 'vendor'; diff --git a/app/Transformers/ClientContactTransformer.php b/app/Transformers/ClientContactTransformer.php index 6161c383f4e0..738a90d5ee40 100644 --- a/app/Transformers/ClientContactTransformer.php +++ b/app/Transformers/ClientContactTransformer.php @@ -47,6 +47,7 @@ class ClientContactTransformer extends EntityTransformer 'send_email' => (bool) $contact->send_email, 'last_login' => (int) $contact->last_login, 'password' => empty($contact->password) ? '' : '**********', + 'link' => $contact->getLoginLink(), ]; } } diff --git a/app/Utils/Helpers.php b/app/Utils/Helpers.php index ef28f19440dc..38bc2feacc9b 100644 --- a/app/Utils/Helpers.php +++ b/app/Utils/Helpers.php @@ -16,8 +16,18 @@ use App\Models\Client; class Helpers { - public static function sharedEmailVariables(Client $client, array $settings = null): array + public static function sharedEmailVariables(?Client $client, array $settings = null): array { + if(!$client){ + + $elements['signature'] = ''; + $elements['settings'] = new \stdClass; + $elements['whitelabel'] = true; + + return $elements; + + } + $_settings = is_null($settings) ? $client->getMergedSettings() : $settings; $elements['signature'] = $_settings->email_signature; diff --git a/app/Utils/HtmlEngine.php b/app/Utils/HtmlEngine.php index 033c8a1ae8dd..a1c75a71ef5b 100644 --- a/app/Utils/HtmlEngine.php +++ b/app/Utils/HtmlEngine.php @@ -162,7 +162,7 @@ class HtmlEngine $data['$quote.amount'] = ['value' => Number::formatMoney($this->entity_calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.quote_total')]; $data['$credit.total'] = ['value' => Number::formatMoney($this->entity_calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.credit_total')]; $data['$credit.number'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.credit_number')]; - $data['$credit.amount'] = &$data['$credit.total']; + $data['$credit.total'] = &$data['$credit.total']; $data['$credit.po_number'] = &$data['$invoice.po_number']; $data['$credit.date'] = ['value' => $this->entity->date, 'label' => ctrans('texts.credit_date')]; $data['$balance'] = ['value' => Number::formatMoney($this->entity_calc->getBalance(), $this->client) ?: ' ', 'label' => ctrans('texts.balance')]; diff --git a/app/Utils/Traits/MakesInvoiceValues.php b/app/Utils/Traits/MakesInvoiceValues.php index b958be54a098..bc1f50d46920 100644 --- a/app/Utils/Traits/MakesInvoiceValues.php +++ b/app/Utils/Traits/MakesInvoiceValues.php @@ -253,7 +253,7 @@ trait MakesInvoiceValues $data['$quote.amount'] = ['value' => Number::formatMoney($calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.quote_total')]; $data['$credit.total'] = ['value' => Number::formatMoney($calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.credit_total')]; $data['$credit.number'] = ['value' => $this->number ?: ' ', 'label' => ctrans('texts.credit_number')]; - $data['$credit.amount'] = &$data['$credit.total']; + $data['$credit.total'] = &$data['$credit.total']; $data['$credit.po_number'] = &$data['$invoice.po_number']; $data['$credit.date'] = ['value' => $this->date, 'label' => ctrans('texts.credit_date')]; $data['$balance'] = ['value' => Number::formatMoney($calc->getBalance(), $this->client) ?: ' ', 'label' => ctrans('texts.balance')]; diff --git a/app/Utils/Traits/MakesTemplateData.php b/app/Utils/Traits/MakesTemplateData.php index dc8e63ca1284..edf69302edc1 100644 --- a/app/Utils/Traits/MakesTemplateData.php +++ b/app/Utils/Traits/MakesTemplateData.php @@ -96,7 +96,7 @@ trait MakesTemplateData $data['$quote_total'] = ['value' => '$100.00', 'label' => ctrans('texts.quote_total')]; $data['$quote.amount'] = &$data['$quote_total']; $data['$credit_total'] = ['value' => '$100.00', 'label' => ctrans('texts.credit_total')]; - $data['$credit.amount'] = &$data['$credit_total']; + $data['$credit.total'] = &$data['$credit_total']; $data['$balance'] = ['value' => '$100.00', 'label' => ctrans('texts.balance')]; $data['$invoice.balance'] = &$data['$balance']; $data['$taxes'] = ['value' => '$10.00', 'label' => ctrans('texts.taxes')]; diff --git a/app/Utils/Traits/Recurring/HasRecurrence.php b/app/Utils/Traits/Recurring/HasRecurrence.php index e56bdcb00ab2..0a553c30ada1 100644 --- a/app/Utils/Traits/Recurring/HasRecurrence.php +++ b/app/Utils/Traits/Recurring/HasRecurrence.php @@ -53,8 +53,12 @@ trait HasRecurrence */ public function setDayOfMonth($date, $day_of_month) { + info($date); + $carbon_date = Carbon::parse($date); + info($carbon_date); + $set_date = $carbon_date->copy()->setUnitNoOverflow('day', $day_of_month, 'month'); //If the set date is less than the original date we need to add a month. diff --git a/composer.json b/composer.json index 16f66a253cb5..7316737155a7 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,13 @@ "description": "Invoices, expenses & time-tracking built with Laravel", "keywords": [ "invoice", - "laravel" + "laravel", + "invoicing", + "time tracking", + "expenses", + "CRM", + "Credit card billing", + "projects" ], "license": "Attribution Assurance License", "authors": [ @@ -26,19 +32,19 @@ "cleverit/ubl_invoice": "^1.3", "composer/composer": "^1.10", "czproject/git-php": "^3.17", - "dacastro4/laravel-gmail": "^4.0", + "turbo124/laravel-gmail": "^5.0", "doctrine/dbal": "^2.10", "fedeisas/laravel-mail-css-inliner": "^3", "fideloper/proxy": "^4.2", "fzaninotto/faker": "^1.4", "google/apiclient": "^2.7", - "guzzlehttp/guzzle": "^6.5", + "guzzlehttp/guzzle": "^7.0.1", "hashids/hashids": "^3.0", "intervention/image": "^2.5", "laracasts/presenter": "^0.2.1", - "laravel/framework": "^7.27", + "laravel/framework": "^8.0", "laravel/slack-notification-channel": "^2.2", - "laravel/socialite": "^4.4", + "laravel/socialite": "^5", "laravel/tinker": "^2.0", "league/flysystem-aws-s3-v3": "~1.0", "league/flysystem-cached-adapter": "^1.1", @@ -49,33 +55,31 @@ "nwidart/laravel-modules": "^6.0", "omnipay/paypal": "^3.0", "predis/predis": "^1.1", - "sentry/sentry-laravel": "^1.8", + "sentry/sentry-laravel": "^2", "spatie/browsershot": "^3.37", "staudenmeir/eloquent-has-many-deep": "^1.11", "stripe/stripe-php": "^7.50", "turbo124/beacon": "^1", "webpatser/laravel-countries": "dev-master#75992ad", - "laravel/ui": "^2.0" + "laravel/ui": "^3.0" }, "require-dev": { - "wildbit/postmark-php": "^2.6", + "wildbit/postmark-php": "^4.0", "anahkiasen/former": "^4.2", "barryvdh/laravel-debugbar": "^3.4", - "darkaonline/l5-swagger": "^7.0", + "darkaonline/l5-swagger": "^8.0", "filp/whoops": "^2.7", "mockery/mockery": "^1.3.1", - "nunomaduro/collision": "^4.1", - "phpunit/phpunit": "^8.5", + "nunomaduro/collision": "^5.0", + "phpunit/phpunit": "^9.0", "fzaninotto/faker": "^1.9.1", - "facade/ignition": "^2.0" + "facade/ignition": "^2.3.6" }, "autoload": { - "classmap": [ - "database/seeds", - "database/factories" - ], "psr-4": { - "App\\": "app/" + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" }, "files": [ "app/Libraries/OFX.php" diff --git a/composer.lock b/composer.lock index 7a341cde05f3..c344f50e9f4c 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": "897c03f97efca6c6540700216fa6d789", + "content-hash": "19f006e6cdd0058bf409d67ed6814437", "packages": [ { "name": "asgrim/ofxparser", @@ -108,16 +108,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.155.1", + "version": "3.157.0", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "575430a46c329a2a3723cdcb2d30df390f434ba1" + "reference": "ad2c0183d7ebc695acb1ba39d528f2328f2c0de3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/575430a46c329a2a3723cdcb2d30df390f434ba1", - "reference": "575430a46c329a2a3723cdcb2d30df390f434ba1", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/ad2c0183d7ebc695acb1ba39d528f2328f2c0de3", + "reference": "ad2c0183d7ebc695acb1ba39d528f2328f2c0de3", "shasum": "" }, "require": { @@ -189,7 +189,7 @@ "s3", "sdk" ], - "time": "2020-09-23T18:11:33+00:00" + "time": "2020-09-30T18:58:20+00:00" }, { "name": "brick/math", @@ -245,16 +245,16 @@ }, { "name": "checkout/checkout-sdk-php", - "version": "1.0.10", + "version": "1.0.12", "source": { "type": "git", "url": "https://github.com/checkout/checkout-sdk-php.git", - "reference": "837f9622165f3ae4f9fdf8d0eca5da2ec46984fa" + "reference": "980b10922979380293251627a11b991f36fd646a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/checkout/checkout-sdk-php/zipball/837f9622165f3ae4f9fdf8d0eca5da2ec46984fa", - "reference": "837f9622165f3ae4f9fdf8d0eca5da2ec46984fa", + "url": "https://api.github.com/repos/checkout/checkout-sdk-php/zipball/980b10922979380293251627a11b991f36fd646a", + "reference": "980b10922979380293251627a11b991f36fd646a", "shasum": "" }, "require": { @@ -296,7 +296,7 @@ "php", "sdk" ], - "time": "2020-09-17T15:39:25+00:00" + "time": "2020-09-24T17:26:52+00:00" }, { "name": "cleverit/ubl_invoice", @@ -640,16 +640,16 @@ }, { "name": "composer/semver", - "version": "1.7.0", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "114f819054a2ea7db03287f5efb757e2af6e4079" + "reference": "38276325bd896f90dfcfe30029aa5db40df387a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/114f819054a2ea7db03287f5efb757e2af6e4079", - "reference": "114f819054a2ea7db03287f5efb757e2af6e4079", + "url": "https://api.github.com/repos/composer/semver/zipball/38276325bd896f90dfcfe30029aa5db40df387a7", + "reference": "38276325bd896f90dfcfe30029aa5db40df387a7", "shasum": "" }, "require": { @@ -711,7 +711,7 @@ "type": "tidelift" } ], - "time": "2020-09-09T09:34:06+00:00" + "time": "2020-09-27T13:13:07+00:00" }, { "name": "composer/spdx-licenses", @@ -887,72 +887,6 @@ ], "time": "2020-07-03T08:02:12+00:00" }, - { - "name": "dacastro4/laravel-gmail", - "version": "v4.0.4", - "source": { - "type": "git", - "url": "https://github.com/dacastro4/laravel-gmail.git", - "reference": "a9c786908f9b6dd127293050f703734e2aa2effa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dacastro4/laravel-gmail/zipball/a9c786908f9b6dd127293050f703734e2aa2effa", - "reference": "a9c786908f9b6dd127293050f703734e2aa2effa", - "shasum": "" - }, - "require": { - "google/apiclient": "^2.5", - "illuminate/auth": "~5.8|^6.0|^7.0", - "illuminate/config": "~5.8|^6.0|^7.0", - "illuminate/database": "~5.8|^6.0|^7.0", - "illuminate/routing": "~5.8|^6.0|^7.0", - "illuminate/session": "~5.8|^6.0|^7.0", - "illuminate/support": "~5.8|^6.0|^7.0", - "php": "^7.2", - "swiftmailer/swiftmailer": "~5.8|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0", - "phpunit/phpunit": "^8.5", - "squizlabs/php_codesniffer": "~3.4" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Dacastro4\\LaravelGmail\\LaravelGmailServiceProvider" - ], - "aliases": { - "LaravelGmail": "Dacastro4\\LaravelGmail\\Facade\\LaravelGmail" - } - } - }, - "autoload": { - "psr-4": { - "Dacastro4\\LaravelGmail\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Castro", - "email": "danielcastro04@gmail.com", - "homepage": "https://danielcastro.me" - } - ], - "description": "Gmail API package for Laravel", - "keywords": [ - "api", - "gmail", - "laravel" - ], - "time": "2020-06-26T19:04:57+00:00" - }, { "name": "dnoegel/php-xdg-base-dir", "version": "v0.1.1", @@ -1084,16 +1018,16 @@ }, { "name": "doctrine/dbal", - "version": "2.11.0", + "version": "2.11.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "0d4e1a8b29dd987704842f0465aded378f441dca" + "reference": "6e6903cd5e3a5be60a79439e3ee8fe126f78fe86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/0d4e1a8b29dd987704842f0465aded378f441dca", - "reference": "0d4e1a8b29dd987704842f0465aded378f441dca", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/6e6903cd5e3a5be60a79439e3ee8fe126f78fe86", + "reference": "6e6903cd5e3a5be60a79439e3ee8fe126f78fe86", "shasum": "" }, "require": { @@ -1188,7 +1122,7 @@ "type": "tidelift" } ], - "time": "2020-09-20T23:24:53+00:00" + "time": "2020-09-27T04:09:41+00:00" }, { "name": "doctrine/event-manager", @@ -1449,30 +1383,29 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v2.3.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" + "reference": "fa4e95ff5a7f1d62c3fbc05c32729b7f3ca14b52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", - "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/fa4e95ff5a7f1d62c3fbc05c32729b7f3ca14b52", + "reference": "fa4e95ff5a7f1d62c3fbc05c32729b7f3ca14b52", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" }, "require-dev": { + "phpstan/phpstan": "^0.11", "phpunit/phpunit": "^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, "autoload": { "psr-4": { "Cron\\": "src/Cron/" @@ -1483,11 +1416,6 @@ "MIT" ], "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, { "name": "Chris Tankersley", "email": "chris@ctankersley.com", @@ -1499,20 +1427,26 @@ "cron", "schedule" ], - "time": "2019-03-31T00:38:28+00:00" + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2020-08-21T02:30:13+00:00" }, { "name": "egulias/email-validator", - "version": "2.1.21", + "version": "2.1.22", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "563d0cdde5d862235ffe24a158497f4d490191b5" + "reference": "68e418ec08fbfc6f58f6fd2eea70ca8efc8cc7d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/563d0cdde5d862235ffe24a158497f4d490191b5", - "reference": "563d0cdde5d862235ffe24a158497f4d490191b5", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/68e418ec08fbfc6f58f6fd2eea70ca8efc8cc7d5", + "reference": "68e418ec08fbfc6f58f6fd2eea70ca8efc8cc7d5", "shasum": "" }, "require": { @@ -1557,7 +1491,7 @@ "validation", "validator" ], - "time": "2020-09-19T14:37:56+00:00" + "time": "2020-09-26T15:48:38+00:00" }, { "name": "fedeisas/laravel-mail-css-inliner", @@ -1833,16 +1767,16 @@ }, { "name": "google/apiclient-services", - "version": "v0.147", + "version": "v0.148", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client-services.git", - "reference": "8624bd004cfccb33b760ae7650d0b750168cd7f7" + "reference": "692a8d4c6a89458570e0d804624c50120cdd6388" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/8624bd004cfccb33b760ae7650d0b750168cd7f7", - "reference": "8624bd004cfccb33b760ae7650d0b750168cd7f7", + "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/692a8d4c6a89458570e0d804624c50120cdd6388", + "reference": "692a8d4c6a89458570e0d804624c50120cdd6388", "shasum": "" }, "require": { @@ -1866,7 +1800,7 @@ "keywords": [ "google" ], - "time": "2020-09-20T00:24:43+00:00" + "time": "2020-09-26T00:26:16+00:00" }, { "name": "google/auth", @@ -1921,38 +1855,106 @@ "time": "2020-09-18T20:03:05+00:00" }, { - "name": "guzzlehttp/guzzle", - "version": "6.5.5", + "name": "graham-campbell/result-type", + "version": "v1.0.1", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/7e279d2cd5d7fbb156ce46daada972355cea27bb", + "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb", + "shasum": "" + }, + "require": { + "php": "^7.0|^8.0", + "phpoption/phpoption": "^1.7.3" + }, + "require-dev": { + "phpunit/phpunit": "^6.5|^7.5|^8.5|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2020-04-13T13:17:36+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.1.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "7427d6f99df41cc01f33cd59832f721c150ffdf3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7427d6f99df41cc01f33cd59832f721c150ffdf3", + "reference": "7427d6f99df41cc01f33cd59832f721c150ffdf3", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.0", "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17.0" + "php": "^7.2.5", + "psr/http-client": "^1.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" }, "require-dev": { "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "php-http/client-integration-tests": "dev-phpunit8", + "phpunit/phpunit": "^8.5.5", "psr/log": "^1.1" }, "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.5-dev" + "dev-master": "7.1-dev" } }, "autoload": { @@ -1972,6 +1974,11 @@ "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], "description": "Guzzle is a PHP HTTP client library", @@ -1982,30 +1989,50 @@ "framework", "http", "http client", + "psr-18", + "psr-7", "rest", "web service" ], - "time": "2020-06-16T21:01:06+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://github.com/alexeyshockov", + "type": "github" + }, + { + "url": "https://github.com/gmponos", + "type": "github" + } + ], + "time": "2020-09-30T08:51:17+00:00" }, { "name": "guzzlehttp/promises", - "version": "v1.3.1", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + "reference": "60d379c243457e073cff02bc323a2a86cb355631" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631", + "reference": "60d379c243457e073cff02bc323a2a86cb355631", "shasum": "" }, "require": { - "php": ">=5.5.0" + "php": ">=5.5" }, "require-dev": { - "phpunit/phpunit": "^4.0" + "symfony/phpunit-bridge": "^4.4 || ^5.1" }, "type": "library", "extra": { @@ -2036,20 +2063,20 @@ "keywords": [ "promise" ], - "time": "2016-12-20T10:07:11+00:00" + "time": "2020-09-30T07:37:28+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.6.1", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a" + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", "shasum": "" }, "require": { @@ -2062,15 +2089,15 @@ }, "require-dev": { "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" }, "suggest": { - "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "1.7-dev" } }, "autoload": { @@ -2107,7 +2134,7 @@ "uri", "url" ], - "time": "2019-07-01T23:21:34+00:00" + "time": "2020-09-30T07:37:11+00:00" }, { "name": "hashids/hashids", @@ -2460,21 +2487,21 @@ }, { "name": "laravel/framework", - "version": "v7.28.3", + "version": "v8.7.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "b0942c391975972b1a54b2dc983e33a239f169a9" + "reference": "3fb29e904a152b3e1fe49581f66ba5e02fe991f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/b0942c391975972b1a54b2dc983e33a239f169a9", - "reference": "b0942c391975972b1a54b2dc983e33a239f169a9", + "url": "https://api.github.com/repos/laravel/framework/zipball/3fb29e904a152b3e1fe49581f66ba5e02fe991f2", + "reference": "3fb29e904a152b3e1fe49581f66ba5e02fe991f2", "shasum": "" }, "require": { "doctrine/inflector": "^1.4|^2.0", - "dragonmantank/cron-expression": "^2.0", + "dragonmantank/cron-expression": "^3.0", "egulias/email-validator": "^2.1.10", "ext-json": "*", "ext-mbstring": "*", @@ -2483,24 +2510,23 @@ "league/flysystem": "^1.0.34", "monolog/monolog": "^2.0", "nesbot/carbon": "^2.17", - "opis/closure": "^3.1", - "php": "^7.2.5", + "opis/closure": "^3.5.3", + "php": "^7.3", "psr/container": "^1.0", "psr/simple-cache": "^1.0", - "ramsey/uuid": "^3.7|^4.0", + "ramsey/uuid": "^4.0", "swiftmailer/swiftmailer": "^6.0", - "symfony/console": "^5.0", - "symfony/error-handler": "^5.0", - "symfony/finder": "^5.0", - "symfony/http-foundation": "^5.0", - "symfony/http-kernel": "^5.0", - "symfony/mime": "^5.0", - "symfony/polyfill-php73": "^1.17", - "symfony/process": "^5.0", - "symfony/routing": "^5.0", - "symfony/var-dumper": "^5.0", + "symfony/console": "^5.1", + "symfony/error-handler": "^5.1", + "symfony/finder": "^5.1", + "symfony/http-foundation": "^5.1", + "symfony/http-kernel": "^5.1", + "symfony/mime": "^5.1", + "symfony/process": "^5.1", + "symfony/routing": "^5.1", + "symfony/var-dumper": "^5.1", "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^4.0", + "vlucas/phpdotenv": "^5.2", "voku/portable-ascii": "^1.4.8" }, "conflict": { @@ -2514,6 +2540,7 @@ "illuminate/broadcasting": "self.version", "illuminate/bus": "self.version", "illuminate/cache": "self.version", + "illuminate/collections": "self.version", "illuminate/config": "self.version", "illuminate/console": "self.version", "illuminate/container": "self.version", @@ -2526,6 +2553,7 @@ "illuminate/hashing": "self.version", "illuminate/http": "self.version", "illuminate/log": "self.version", + "illuminate/macroable": "self.version", "illuminate/mail": "self.version", "illuminate/notifications": "self.version", "illuminate/pagination": "self.version", @@ -2544,15 +2572,14 @@ "aws/aws-sdk-php": "^3.0", "doctrine/dbal": "^2.6", "filp/whoops": "^2.4", - "guzzlehttp/guzzle": "^6.3.1|^7.0", + "guzzlehttp/guzzle": "^6.5.5|^7.0.1", "league/flysystem-cached-adapter": "^1.0", "mockery/mockery": "^1.3.1", - "moontoast/math": "^1.1", - "orchestra/testbench-core": "^5.0", + "orchestra/testbench-core": "^6.0", "pda/pheanstalk": "^4.0", "phpunit/phpunit": "^8.4|^9.0", "predis/predis": "^1.1.1", - "symfony/cache": "^5.0" + "symfony/cache": "^5.1" }, "suggest": { "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.0).", @@ -2565,37 +2592,42 @@ "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", "filp/whoops": "Required for friendly error pages in development (^2.4).", "fzaninotto/faker": "Required to use the eloquent factory builder (^1.9.1).", - "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.3.1|^7.0).", + "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.5.5|^7.0.1).", "laravel/tinker": "Required to use the tinker console command (^2.0).", "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", "mockery/mockery": "Required to use mocking (^1.3.1).", - "moontoast/math": "Required to use ordered UUIDs (^1.1).", "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", "phpunit/phpunit": "Required to use assertions and run tests (^8.4|^9.0).", "predis/predis": "Required to use the predis connector (^1.1.2).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^5.0).", - "symfony/filesystem": "Required to create relative storage directory symbolic links (^5.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^5.1).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^5.1).", "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.x-dev" + "dev-master": "8.x-dev" } }, "autoload": { "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" ], "psr-4": { - "Illuminate\\": "src/Illuminate/" + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -2614,7 +2646,7 @@ "framework", "laravel" ], - "time": "2020-09-17T14:23:26+00:00" + "time": "2020-09-29T15:39:07+00:00" }, { "name": "laravel/slack-notification-channel", @@ -2675,36 +2707,36 @@ }, { "name": "laravel/socialite", - "version": "v4.4.1", + "version": "v5.0.1", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "80951df0d93435b773aa00efe1fad6d5015fac75" + "reference": "61ad2b5f98e28f8e4e479851f8744b43ebbb9b46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/80951df0d93435b773aa00efe1fad6d5015fac75", - "reference": "80951df0d93435b773aa00efe1fad6d5015fac75", + "url": "https://api.github.com/repos/laravel/socialite/zipball/61ad2b5f98e28f8e4e479851f8744b43ebbb9b46", + "reference": "61ad2b5f98e28f8e4e479851f8744b43ebbb9b46", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/guzzle": "^6.0|^7.0", - "illuminate/http": "~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/support": "~5.7.0|~5.8.0|^6.0|^7.0", + "illuminate/http": "^6.0|^7.0|^8.0", + "illuminate/support": "^6.0|^7.0|^8.0", "league/oauth1-client": "^1.0", - "php": "^7.1.3" + "php": "^7.2" }, "require-dev": { - "illuminate/contracts": "~5.7.0|~5.8.0|^6.0|^7.0", + "illuminate/contracts": "^6.0|^7.0", "mockery/mockery": "^1.0", - "orchestra/testbench": "^3.7|^3.8|^4.0|^5.0", - "phpunit/phpunit": "^7.0|^8.0" + "orchestra/testbench": "^4.0|^5.0|^6.0", + "phpunit/phpunit": "^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" }, "laravel": { "providers": [ @@ -2736,7 +2768,7 @@ "laravel", "oauth" ], - "time": "2020-06-03T13:30:03+00:00" + "time": "2020-09-12T14:40:16+00:00" }, { "name": "laravel/tinker", @@ -2804,30 +2836,29 @@ }, { "name": "laravel/ui", - "version": "v2.4.1", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/laravel/ui.git", - "reference": "1c69ae3e8b52fe6c9eaf83b43c6dd8ef5c3f9e2c" + "reference": "ff6af4f0bc5a5bfe73352cdc03dbfffc4ace92d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/1c69ae3e8b52fe6c9eaf83b43c6dd8ef5c3f9e2c", - "reference": "1c69ae3e8b52fe6c9eaf83b43c6dd8ef5c3f9e2c", + "url": "https://api.github.com/repos/laravel/ui/zipball/ff6af4f0bc5a5bfe73352cdc03dbfffc4ace92d8", + "reference": "ff6af4f0bc5a5bfe73352cdc03dbfffc4ace92d8", "shasum": "" }, "require": { - "illuminate/console": "^7.0", - "illuminate/filesystem": "^7.0", - "illuminate/support": "^7.0", - "php": "^7.2.5" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^8.0" + "illuminate/console": "^8.0", + "illuminate/filesystem": "^8.0", + "illuminate/support": "^8.0", + "php": "^7.3" }, "type": "library", "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + }, "laravel": { "providers": [ "Laravel\\Ui\\UiServiceProvider" @@ -2855,7 +2886,7 @@ "laravel", "ui" ], - "time": "2020-09-22T16:51:51+00:00" + "time": "2020-09-11T15:34:08+00:00" }, { "name": "league/commonmark", @@ -3315,16 +3346,16 @@ }, { "name": "league/oauth1-client", - "version": "v1.8.1", + "version": "v1.8.2", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth1-client.git", - "reference": "3a68155c3f27a91f4b66a2dc03996cd6f3281c9f" + "reference": "159c3d2bf27568f9af87d6c3f4bb616a251eb12b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/3a68155c3f27a91f4b66a2dc03996cd6f3281c9f", - "reference": "3a68155c3f27a91f4b66a2dc03996cd6f3281c9f", + "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/159c3d2bf27568f9af87d6c3f4bb616a251eb12b", + "reference": "159c3d2bf27568f9af87d6c3f4bb616a251eb12b", "shasum": "" }, "require": { @@ -3382,26 +3413,27 @@ "tumblr", "twitter" ], - "time": "2020-09-04T11:07:03+00:00" + "time": "2020-09-28T09:39:08+00:00" }, { "name": "league/omnipay", - "version": "v3.0.2", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/thephpleague/omnipay.git", - "reference": "9e10d91cbf84744207e13d4483e79de39b133368" + "reference": "1ba7c8a3312cf2342458b99c9e5b86eaae44aed2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/omnipay/zipball/9e10d91cbf84744207e13d4483e79de39b133368", - "reference": "9e10d91cbf84744207e13d4483e79de39b133368", + "url": "https://api.github.com/repos/thephpleague/omnipay/zipball/1ba7c8a3312cf2342458b99c9e5b86eaae44aed2", + "reference": "1ba7c8a3312cf2342458b99c9e5b86eaae44aed2", "shasum": "" }, "require": { "omnipay/common": "^3", - "php": "^5.6|^7", - "php-http/guzzle6-adapter": "^1.1|^2" + "php": "^7.2", + "php-http/discovery": "^1.12", + "php-http/guzzle7-adapter": "^0.1" }, "require-dev": { "omnipay/tests": "^3" @@ -3409,7 +3441,7 @@ "type": "metapackage", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "3.1.x-dev" } }, "notification-url": "https://packagist.org/downloads/", @@ -3434,7 +3466,7 @@ "omnipay", "payment" ], - "time": "2019-03-20T14:28:28+00:00" + "time": "2020-09-22T14:02:17+00:00" }, { "name": "livewire/livewire", @@ -3927,16 +3959,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.10.1", + "version": "v4.10.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "1b479e7592812411c20c34d9ed33db3957bde66e" + "reference": "658f1be311a230e0907f5dfe0213742aff0596de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1b479e7592812411c20c34d9ed33db3957bde66e", - "reference": "1b479e7592812411c20c34d9ed33db3957bde66e", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/658f1be311a230e0907f5dfe0213742aff0596de", + "reference": "658f1be311a230e0907f5dfe0213742aff0596de", "shasum": "" }, "require": { @@ -3975,7 +4007,7 @@ "parser", "php" ], - "time": "2020-09-23T18:23:49+00:00" + "time": "2020-09-26T10:30:38+00:00" }, { "name": "nwidart/laravel-modules", @@ -4190,65 +4222,6 @@ ], "time": "2018-05-15T10:35:58+00:00" }, - { - "name": "omnipay/stripe", - "version": "v3.1.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/omnipay-stripe.git", - "reference": "37df2a791e8feab45543125f4c5f22d5d305096d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/omnipay-stripe/zipball/37df2a791e8feab45543125f4c5f22d5d305096d", - "reference": "37df2a791e8feab45543125f4c5f22d5d305096d", - "shasum": "" - }, - "require": { - "omnipay/common": "^3" - }, - "require-dev": { - "omnipay/tests": "^3", - "phpro/grumphp": "^0.14", - "squizlabs/php_codesniffer": "^3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Omnipay\\Stripe\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Adrian Macneil", - "email": "adrian@adrianmacneil.com" - }, - { - "name": "Omnipay Contributors", - "homepage": "https://github.com/thephpleague/omnipay-stripe/contributors" - } - ], - "description": "Stripe driver for the Omnipay payment processing library", - "homepage": "https://github.com/thephpleague/omnipay-stripe", - "keywords": [ - "gateway", - "merchant", - "omnipay", - "pay", - "payment", - "stripe" - ], - "time": "2019-08-31T10:55:06+00:00" - }, { "name": "opis/closure", "version": "3.5.7", @@ -4492,22 +4465,22 @@ "time": "2020-09-22T13:31:04+00:00" }, { - "name": "php-http/guzzle6-adapter", - "version": "v2.0.1", + "name": "php-http/guzzle7-adapter", + "version": "0.1.0", "source": { "type": "git", - "url": "https://github.com/php-http/guzzle6-adapter.git", - "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f" + "url": "https://github.com/php-http/guzzle7-adapter.git", + "reference": "5b361e0dbd7d9d5e21f80400bcccf9fb8d5d1f1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/6074a4b1f4d5c21061b70bab3b8ad484282fe31f", - "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f", + "url": "https://api.github.com/repos/php-http/guzzle7-adapter/zipball/5b361e0dbd7d9d5e21f80400bcccf9fb8d5d1f1e", + "reference": "5b361e0dbd7d9d5e21f80400bcccf9fb8d5d1f1e", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^6.0", - "php": "^7.1", + "guzzlehttp/guzzle": "^7.0", + "php": "^7.2", "php-http/httplug": "^2.0", "psr/http-client": "^1.0" }, @@ -4517,19 +4490,18 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "ext-curl": "*", "php-http/client-integration-tests": "^2.0", "phpunit/phpunit": "^7.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "0.2.x-dev" } }, "autoload": { "psr-4": { - "Http\\Adapter\\Guzzle6\\": "src/" + "Http\\Adapter\\Guzzle7\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4538,21 +4510,17 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "David de Boer", - "email": "david@ddeboer.nl" + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" } ], - "description": "Guzzle 6 HTTP Adapter", + "description": "Guzzle 7 HTTP Adapter", "homepage": "http://httplug.io", "keywords": [ "Guzzle", "http" ], - "time": "2018-12-16T14:44:03+00:00" + "time": "2020-09-17T07:29:54+00:00" }, { "name": "php-http/httplug", @@ -5907,21 +5875,21 @@ }, { "name": "sentry/sdk", - "version": "2.2.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php-sdk.git", - "reference": "089858b1b27d3705a5fd1c32d8d10beb55980190" + "reference": "908ea3fd0e7a19ccf4b53d1c247c44231595d008" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/089858b1b27d3705a5fd1c32d8d10beb55980190", - "reference": "089858b1b27d3705a5fd1c32d8d10beb55980190", + "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/908ea3fd0e7a19ccf4b53d1c247c44231595d008", + "reference": "908ea3fd0e7a19ccf4b53d1c247c44231595d008", "shasum": "" }, "require": { "http-interop/http-factory-guzzle": "^1.0", - "sentry/sentry": "^2.5", + "sentry/sentry": "^3.0", "symfony/http-client": "^4.3|^5.0" }, "type": "metapackage", @@ -5956,20 +5924,20 @@ "type": "custom" } ], - "time": "2020-09-14T09:30:55+00:00" + "time": "2020-09-28T07:49:07+00:00" }, { "name": "sentry/sentry", - "version": "2.5.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php.git", - "reference": "bab5b73dbaf5f0ff62317e1611d952764d5514a9" + "reference": "b77ff3783060ce3213011ddae369e550ec985dc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/bab5b73dbaf5f0ff62317e1611d952764d5514a9", - "reference": "bab5b73dbaf5f0ff62317e1611d952764d5514a9", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/b77ff3783060ce3213011ddae369e550ec985dc8", + "reference": "b77ff3783060ce3213011ddae369e550ec985dc8", "shasum": "" }, "require": { @@ -5977,8 +5945,9 @@ "ext-mbstring": "*", "guzzlehttp/promises": "^1.3", "guzzlehttp/psr7": "^1.6", - "jean85/pretty-package-versions": "^1.2", - "php": "^7.1", + "jean85/pretty-package-versions": "^1.5", + "ocramius/package-versions": "^1.8", + "php": "^7.2", "php-http/async-client-implementation": "^1.0", "php-http/client-common": "^1.5|^2.0", "php-http/discovery": "^1.6.1", @@ -5987,7 +5956,8 @@ "psr/http-factory": "^1.0", "psr/http-message-implementation": "^1.0", "psr/log": "^1.0", - "symfony/options-resolver": "^2.7|^3.0|^4.0|^5.0", + "symfony/options-resolver": "^3.4.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.17", "symfony/polyfill-uuid": "^1.13.1" }, "conflict": { @@ -5996,6 +5966,7 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.16", + "http-interop/http-factory-guzzle": "^1.0", "monolog/monolog": "^1.3|^2.0", "php-http/mock-client": "^1.3", "phpstan/extension-installer": "^1.0", @@ -6011,7 +5982,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -6053,26 +6024,26 @@ "type": "custom" } ], - "time": "2020-09-14T07:02:40+00:00" + "time": "2020-09-28T07:11:32+00:00" }, { "name": "sentry/sentry-laravel", - "version": "1.9.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-laravel.git", - "reference": "8567e70d03081cbc04e35eb3fa7389d06816196e" + "reference": "ed8f28507f18474223df7de4c86e210c09dda630" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/8567e70d03081cbc04e35eb3fa7389d06816196e", - "reference": "8567e70d03081cbc04e35eb3fa7389d06816196e", + "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/ed8f28507f18474223df7de4c86e210c09dda630", + "reference": "ed8f28507f18474223df7de4c86e210c09dda630", "shasum": "" }, "require": { "illuminate/support": "5.0 - 5.8 | ^6.0 | ^7.0 | ^8.0", - "php": "^7.1", - "sentry/sdk": "^2.1" + "php": "^7.2", + "sentry/sdk": "^3.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "2.16.*", @@ -6083,12 +6054,13 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev", + "dev-master": "2.x-dev", "dev-0.x": "0.x-dev" }, "laravel": { "providers": [ - "Sentry\\Laravel\\ServiceProvider" + "Sentry\\Laravel\\ServiceProvider", + "Sentry\\Laravel\\Tracing\\ServiceProvider" ], "aliases": { "Sentry": "Sentry\\Laravel\\Facade" @@ -6132,20 +6104,20 @@ "type": "custom" } ], - "time": "2020-09-07T07:16:41+00:00" + "time": "2020-09-28T08:31:49+00:00" }, { "name": "spatie/browsershot", - "version": "3.38.0", + "version": "3.39.0", "source": { "type": "git", "url": "https://github.com/spatie/browsershot.git", - "reference": "97ebb1dc0750f9c543162cb1e44d5b4916b17a7c" + "reference": "572968978e5e07513f44819b0e744403c13fa1a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/browsershot/zipball/97ebb1dc0750f9c543162cb1e44d5b4916b17a7c", - "reference": "97ebb1dc0750f9c543162cb1e44d5b4916b17a7c", + "url": "https://api.github.com/repos/spatie/browsershot/zipball/572968978e5e07513f44819b0e744403c13fa1a1", + "reference": "572968978e5e07513f44819b0e744403c13fa1a1", "shasum": "" }, "require": { @@ -6194,7 +6166,7 @@ "type": "github" } ], - "time": "2020-09-22T06:26:15+00:00" + "time": "2020-09-24T08:59:01+00:00" }, { "name": "spatie/image", @@ -6348,27 +6320,27 @@ }, { "name": "staudenmeir/eloquent-has-many-deep", - "version": "v1.12", + "version": "v1.13", "source": { "type": "git", "url": "https://github.com/staudenmeir/eloquent-has-many-deep.git", - "reference": "7417572873c9fb4fa84e894ebbf324629cbc63c0" + "reference": "6ba7af2a83e263bd27ee4e65fafabf89c2efcb26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/staudenmeir/eloquent-has-many-deep/zipball/7417572873c9fb4fa84e894ebbf324629cbc63c0", - "reference": "7417572873c9fb4fa84e894ebbf324629cbc63c0", + "url": "https://api.github.com/repos/staudenmeir/eloquent-has-many-deep/zipball/6ba7af2a83e263bd27ee4e65fafabf89c2efcb26", + "reference": "6ba7af2a83e263bd27ee4e65fafabf89c2efcb26", "shasum": "" }, "require": { - "illuminate/database": "^7.0", - "php": "^7.2.5" + "illuminate/database": "^8.0", + "php": "^7.3" }, "require-dev": { - "illuminate/pagination": "^7.0", - "laravel/homestead": "^10.0", - "phpunit/phpunit": "^8.5", - "staudenmeir/eloquent-eager-limit": "^1.5" + "illuminate/pagination": "^8.0", + "laravel/homestead": "^11.0", + "phpunit/phpunit": "^9.3", + "staudenmeir/eloquent-eager-limit": "^1.6" }, "type": "library", "autoload": { @@ -6387,20 +6359,26 @@ } ], "description": "Laravel Eloquent HasManyThrough relationships with unlimited levels", - "time": "2020-01-31T12:37:57+00:00" + "funding": [ + { + "url": "https://paypal.me/JonasStaudenmeir", + "type": "custom" + } + ], + "time": "2020-08-19T20:13:24+00:00" }, { "name": "stripe/stripe-php", - "version": "v7.54.0", + "version": "v7.57.0", "source": { "type": "git", "url": "https://github.com/stripe/stripe-php.git", - "reference": "3a5cff6ce6f5f2f0fc75164d3677bd5dc3e96fe3" + "reference": "e2475efff624c6b9b62e8ea14ba7ee4e417cbfe5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stripe/stripe-php/zipball/3a5cff6ce6f5f2f0fc75164d3677bd5dc3e96fe3", - "reference": "3a5cff6ce6f5f2f0fc75164d3677bd5dc3e96fe3", + "url": "https://api.github.com/repos/stripe/stripe-php/zipball/e2475efff624c6b9b62e8ea14ba7ee4e417cbfe5", + "reference": "e2475efff624c6b9b62e8ea14ba7ee4e417cbfe5", "shasum": "" }, "require": { @@ -6444,7 +6422,7 @@ "payment processing", "stripe" ], - "time": "2020-09-23T21:48:00+00:00" + "time": "2020-09-30T05:53:53+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -6510,16 +6488,16 @@ }, { "name": "symfony/console", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "186f395b256065ba9b890c0a4e48a91d598fa2cf" + "reference": "04c3a31fe8ea94b42c9e2d1acc93d19782133b00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/186f395b256065ba9b890c0a4e48a91d598fa2cf", - "reference": "186f395b256065ba9b890c0a4e48a91d598fa2cf", + "url": "https://api.github.com/repos/symfony/console/zipball/04c3a31fe8ea94b42c9e2d1acc93d19782133b00", + "reference": "04c3a31fe8ea94b42c9e2d1acc93d19782133b00", "shasum": "" }, "require": { @@ -6599,11 +6577,11 @@ "type": "tidelift" } ], - "time": "2020-09-02T07:07:40+00:00" + "time": "2020-09-18T14:27:32+00:00" }, { "name": "symfony/css-selector", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -6734,16 +6712,16 @@ }, { "name": "symfony/error-handler", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "525636d4b84e06c6ca72d96b6856b5b169416e6a" + "reference": "d2f1d4996d5499f1261164d10080e4120001f041" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/525636d4b84e06c6ca72d96b6856b5b169416e6a", - "reference": "525636d4b84e06c6ca72d96b6856b5b169416e6a", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/d2f1d4996d5499f1261164d10080e4120001f041", + "reference": "d2f1d4996d5499f1261164d10080e4120001f041", "shasum": "" }, "require": { @@ -6801,20 +6779,20 @@ "type": "tidelift" } ], - "time": "2020-08-17T10:01:29+00:00" + "time": "2020-09-27T03:44:28+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "94871fc0a69c3c5da57764187724cdce0755899c" + "reference": "d5de97d6af175a9e8131c546db054ca32842dd0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/94871fc0a69c3c5da57764187724cdce0755899c", - "reference": "94871fc0a69c3c5da57764187724cdce0755899c", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d5de97d6af175a9e8131c546db054ca32842dd0f", + "reference": "d5de97d6af175a9e8131c546db054ca32842dd0f", "shasum": "" }, "require": { @@ -6834,6 +6812,7 @@ "psr/log": "~1.0", "symfony/config": "^4.4|^5.0", "symfony/dependency-injection": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0", "symfony/expression-language": "^4.4|^5.0", "symfony/http-foundation": "^4.4|^5.0", "symfony/service-contracts": "^1.1|^2", @@ -6887,7 +6866,7 @@ "type": "tidelift" } ], - "time": "2020-08-13T14:19:42+00:00" + "time": "2020-09-18T14:27:32+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -6967,16 +6946,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "f7b9ed6142a34252d219801d9767dedbd711da1a" + "reference": "f3194303d3077829dbbc1d18f50288b2a01146f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/f7b9ed6142a34252d219801d9767dedbd711da1a", - "reference": "f7b9ed6142a34252d219801d9767dedbd711da1a", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/f3194303d3077829dbbc1d18f50288b2a01146f2", + "reference": "f3194303d3077829dbbc1d18f50288b2a01146f2", "shasum": "" }, "require": { @@ -7027,20 +7006,20 @@ "type": "tidelift" } ], - "time": "2020-08-21T17:19:47+00:00" + "time": "2020-09-02T16:23:27+00:00" }, { "name": "symfony/finder", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "2b765f0cf6612b3636e738c0689b29aa63088d5d" + "reference": "2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/2b765f0cf6612b3636e738c0689b29aa63088d5d", - "reference": "2b765f0cf6612b3636e738c0689b29aa63088d5d", + "url": "https://api.github.com/repos/symfony/finder/zipball/2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8", + "reference": "2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8", "shasum": "" }, "require": { @@ -7090,26 +7069,26 @@ "type": "tidelift" } ], - "time": "2020-08-17T10:01:29+00:00" + "time": "2020-09-02T16:23:27+00:00" }, { "name": "symfony/http-client", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "21c4372e9cd2305313f4d4792d7b9fa7c25ade53" + "reference": "4a5f2750b54e3cfc5b6711dd78fdbac6563ee7bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/21c4372e9cd2305313f4d4792d7b9fa7c25ade53", - "reference": "21c4372e9cd2305313f4d4792d7b9fa7c25ade53", + "url": "https://api.github.com/repos/symfony/http-client/zipball/4a5f2750b54e3cfc5b6711dd78fdbac6563ee7bf", + "reference": "4a5f2750b54e3cfc5b6711dd78fdbac6563ee7bf", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1.0", - "symfony/http-client-contracts": "^2.1.1", + "symfony/http-client-contracts": "^2.2", "symfony/polyfill-php73": "^1.11", "symfony/polyfill-php80": "^1.15", "symfony/service-contracts": "^1.0|^2" @@ -7176,7 +7155,7 @@ "type": "tidelift" } ], - "time": "2020-09-02T08:02:12+00:00" + "time": "2020-09-27T03:44:28+00:00" }, { "name": "symfony/http-client-contracts", @@ -7255,16 +7234,16 @@ }, { "name": "symfony/http-foundation", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "41a4647f12870e9d41d9a7d72ff0614a27208558" + "reference": "6cca6b2e4b69fc5bace160d14cf1ee5f71483db4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/41a4647f12870e9d41d9a7d72ff0614a27208558", - "reference": "41a4647f12870e9d41d9a7d72ff0614a27208558", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6cca6b2e4b69fc5bace160d14cf1ee5f71483db4", + "reference": "6cca6b2e4b69fc5bace160d14cf1ee5f71483db4", "shasum": "" }, "require": { @@ -7326,20 +7305,20 @@ "type": "tidelift" } ], - "time": "2020-08-17T07:48:54+00:00" + "time": "2020-09-13T05:01:27+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "3e32676e6cb5d2081c91a56783471ff8a7f7110b" + "reference": "17227644c3c66dcf32bdfeceff4364d090cd6756" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3e32676e6cb5d2081c91a56783471ff8a7f7110b", - "reference": "3e32676e6cb5d2081c91a56783471ff8a7f7110b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/17227644c3c66dcf32bdfeceff4364d090cd6756", + "reference": "17227644c3c66dcf32bdfeceff4364d090cd6756", "shasum": "" }, "require": { @@ -7348,6 +7327,7 @@ "symfony/deprecation-contracts": "^2.1", "symfony/error-handler": "^4.4|^5.0", "symfony/event-dispatcher": "^5.0", + "symfony/http-client-contracts": "^1.1|^2", "symfony/http-foundation": "^4.4|^5.0", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", @@ -7439,20 +7419,20 @@ "type": "tidelift" } ], - "time": "2020-09-02T08:15:18+00:00" + "time": "2020-09-27T04:33:19+00:00" }, { "name": "symfony/mime", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "89a2c9b4cb7b5aa516cf55f5194c384f444c81dc" + "reference": "4404d6545125863561721514ad9388db2661eec5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/89a2c9b4cb7b5aa516cf55f5194c384f444c81dc", - "reference": "89a2c9b4cb7b5aa516cf55f5194c384f444c81dc", + "url": "https://api.github.com/repos/symfony/mime/zipball/4404d6545125863561721514ad9388db2661eec5", + "reference": "4404d6545125863561721514ad9388db2661eec5", "shasum": "" }, "require": { @@ -7516,20 +7496,20 @@ "type": "tidelift" } ], - "time": "2020-08-17T10:01:29+00:00" + "time": "2020-09-02T16:23:27+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "9ff59517938f88d90b6e65311fef08faa640f681" + "reference": "4c7e155bf7d93ea4ba3824d5a14476694a5278dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/9ff59517938f88d90b6e65311fef08faa640f681", - "reference": "9ff59517938f88d90b6e65311fef08faa640f681", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4c7e155bf7d93ea4ba3824d5a14476694a5278dd", + "reference": "4c7e155bf7d93ea4ba3824d5a14476694a5278dd", "shasum": "" }, "require": { @@ -7586,7 +7566,7 @@ "type": "tidelift" } ], - "time": "2020-07-12T12:58:00+00:00" + "time": "2020-09-27T03:44:28+00:00" }, { "name": "symfony/polyfill-ctype", @@ -8447,16 +8427,16 @@ }, { "name": "symfony/process", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "1864216226af21eb76d9477f691e7cbf198e0402" + "reference": "d3a2e64866169586502f0cd9cab69135ad12cee9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/1864216226af21eb76d9477f691e7cbf198e0402", - "reference": "1864216226af21eb76d9477f691e7cbf198e0402", + "url": "https://api.github.com/repos/symfony/process/zipball/d3a2e64866169586502f0cd9cab69135ad12cee9", + "reference": "d3a2e64866169586502f0cd9cab69135ad12cee9", "shasum": "" }, "require": { @@ -8507,20 +8487,20 @@ "type": "tidelift" } ], - "time": "2020-07-23T08:36:24+00:00" + "time": "2020-09-02T16:23:27+00:00" }, { "name": "symfony/routing", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "47b0218344cb6af25c93ca8ee1137fafbee5005d" + "reference": "d36e06eb02a55522a8eed070c1cbc3dc3c389876" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/47b0218344cb6af25c93ca8ee1137fafbee5005d", - "reference": "47b0218344cb6af25c93ca8ee1137fafbee5005d", + "url": "https://api.github.com/repos/symfony/routing/zipball/d36e06eb02a55522a8eed070c1cbc3dc3c389876", + "reference": "d36e06eb02a55522a8eed070c1cbc3dc3c389876", "shasum": "" }, "require": { @@ -8599,7 +8579,7 @@ "type": "tidelift" } ], - "time": "2020-08-10T08:03:57+00:00" + "time": "2020-09-02T16:23:27+00:00" }, { "name": "symfony/service-contracts", @@ -8679,16 +8659,16 @@ }, { "name": "symfony/string", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "0de4cc1e18bb596226c06a82e2e7e9bc6001a63a" + "reference": "4a9afe9d07bac506f75bcee8ed3ce76da5a9343e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/0de4cc1e18bb596226c06a82e2e7e9bc6001a63a", - "reference": "0de4cc1e18bb596226c06a82e2e7e9bc6001a63a", + "url": "https://api.github.com/repos/symfony/string/zipball/4a9afe9d07bac506f75bcee8ed3ce76da5a9343e", + "reference": "4a9afe9d07bac506f75bcee8ed3ce76da5a9343e", "shasum": "" }, "require": { @@ -8760,20 +8740,20 @@ "type": "tidelift" } ], - "time": "2020-08-17T07:48:54+00:00" + "time": "2020-09-15T12:23:47+00:00" }, { "name": "symfony/translation", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "917b02cdc5f33e0309b8e9d33ee1480b20687413" + "reference": "e3cdd5119b1b5bf0698c351b8ee20fb5a4ea248b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/917b02cdc5f33e0309b8e9d33ee1480b20687413", - "reference": "917b02cdc5f33e0309b8e9d33ee1480b20687413", + "url": "https://api.github.com/repos/symfony/translation/zipball/e3cdd5119b1b5bf0698c351b8ee20fb5a4ea248b", + "reference": "e3cdd5119b1b5bf0698c351b8ee20fb5a4ea248b", "shasum": "" }, "require": { @@ -8852,7 +8832,7 @@ "type": "tidelift" } ], - "time": "2020-08-17T10:01:29+00:00" + "time": "2020-09-27T03:44:28+00:00" }, { "name": "symfony/translation-contracts", @@ -8931,16 +8911,16 @@ }, { "name": "symfony/var-dumper", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "b43a3905262bcf97b2510f0621f859ca4f5287be" + "reference": "c976c115a0d788808f7e71834c8eb0844f678d02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b43a3905262bcf97b2510f0621f859ca4f5287be", - "reference": "b43a3905262bcf97b2510f0621f859ca4f5287be", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c976c115a0d788808f7e71834c8eb0844f678d02", + "reference": "c976c115a0d788808f7e71834c8eb0844f678d02", "shasum": "" }, "require": { @@ -9017,7 +8997,7 @@ "type": "tidelift" } ], - "time": "2020-08-17T07:42:30+00:00" + "time": "2020-09-18T14:27:32+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -9070,21 +9050,21 @@ }, { "name": "turbo124/beacon", - "version": "1.0.0", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/turbo124/beacon.git", - "reference": "21e1ba46776fae8dc4bcf672890b257e3452be59" + "reference": "687484955bdc8bfca957ccd060e6c1fa41ada056" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/turbo124/beacon/zipball/21e1ba46776fae8dc4bcf672890b257e3452be59", - "reference": "21e1ba46776fae8dc4bcf672890b257e3452be59", + "url": "https://api.github.com/repos/turbo124/beacon/zipball/687484955bdc8bfca957ccd060e6c1fa41ada056", + "reference": "687484955bdc8bfca957ccd060e6c1fa41ada056", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^6.5", - "illuminate/support": "^6.0|^7.0", + "guzzlehttp/guzzle": "^7", + "illuminate/support": "^6.0|^7.0|^8.0", "php": "^7.3" }, "require-dev": { @@ -9126,41 +9106,109 @@ "lightlogs", "turbo124" ], - "time": "2020-06-10T22:55:22+00:00" + "time": "2020-10-01T05:21:36+00:00" }, { - "name": "vlucas/phpdotenv", - "version": "v4.1.8", + "name": "turbo124/laravel-gmail", + "version": "v5.0.0", "source": { "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "572af79d913627a9d70374d27a6f5d689a35de32" + "url": "https://github.com/turbo124/laravel-gmail.git", + "reference": "2f623fbdcfbcbce1d9946ccdd1274528a9783bcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/572af79d913627a9d70374d27a6f5d689a35de32", - "reference": "572af79d913627a9d70374d27a6f5d689a35de32", + "url": "https://api.github.com/repos/turbo124/laravel-gmail/zipball/2f623fbdcfbcbce1d9946ccdd1274528a9783bcf", + "reference": "2f623fbdcfbcbce1d9946ccdd1274528a9783bcf", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", - "phpoption/phpoption": "^1.7.3", - "symfony/polyfill-ctype": "^1.17" + "google/apiclient": "^2.5", + "illuminate/auth": "~5.8|^6.0|^7.0|^8.0", + "illuminate/config": "~5.8|^6.0|^7.0|^8.0", + "illuminate/database": "~5.8|^6.0|^7.0|^8.0", + "illuminate/routing": "~5.8|^6.0|^7.0|^8.0", + "illuminate/session": "~5.8|^6.0|^7.0|^8.0", + "illuminate/support": "~5.8|^6.0|^7.0|^8.0", + "php": "^7.2", + "swiftmailer/swiftmailer": "~5.8|^6.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^4.0", + "phpunit/phpunit": "^8.5", + "squizlabs/php_codesniffer": "~3.4" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Dacastro4\\LaravelGmail\\LaravelGmailServiceProvider" + ], + "aliases": { + "LaravelGmail": "Dacastro4\\LaravelGmail\\Facade\\LaravelGmail" + } + } + }, + "autoload": { + "psr-4": { + "Dacastro4\\LaravelGmail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Castro", + "email": "danielcastro04@gmail.com", + "homepage": "https://danielcastro.me" + } + ], + "description": "Gmail API package for Laravel", + "keywords": [ + "api", + "gmail", + "laravel" + ], + "time": "2020-10-01T03:04:41+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "fba64139db67123c7a57072e5f8d3db10d160b66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/fba64139db67123c7a57072e5f8d3db10d160b66", + "reference": "fba64139db67123c7a57072e5f8d3db10d160b66", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.0.1", + "php": "^7.1.3 || ^8.0", + "phpoption/phpoption": "^1.7.4", + "symfony/polyfill-ctype": "^1.17", + "symfony/polyfill-mbstring": "^1.17", + "symfony/polyfill-php80": "^1.17" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", "ext-filter": "*", - "ext-pcre": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0" + "phpunit/phpunit": "^7.5.20 || ^8.5.2 || ^9.0" }, "suggest": { - "ext-filter": "Required to use the boolean validator.", - "ext-pcre": "Required to use most of the library." + "ext-filter": "Required to use the boolean validator." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "5.2-dev" } }, "autoload": { @@ -9200,7 +9248,7 @@ "type": "tidelift" } ], - "time": "2020-07-14T19:22:52+00:00" + "time": "2020-09-14T15:57:31+00:00" }, { "name": "voku/portable-ascii", @@ -9529,34 +9577,32 @@ }, { "name": "darkaonline/l5-swagger", - "version": "7.0.1", + "version": "8.0.2", "source": { "type": "git", "url": "https://github.com/DarkaOnLine/L5-Swagger.git", - "reference": "64e9cfaa0065f1c9d9b85c203a1de893698c7336" + "reference": "9b900e353503237ed983cae17277ff12fc1aaaf9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DarkaOnLine/L5-Swagger/zipball/64e9cfaa0065f1c9d9b85c203a1de893698c7336", - "reference": "64e9cfaa0065f1c9d9b85c203a1de893698c7336", + "url": "https://api.github.com/repos/DarkaOnLine/L5-Swagger/zipball/9b900e353503237ed983cae17277ff12fc1aaaf9", + "reference": "9b900e353503237ed983cae17277ff12fc1aaaf9", "shasum": "" }, "require": { - "laravel/framework": "^7.0", + "ext-json": "*", + "laravel/framework": "^8.0 || ^7.0", "php": "^7.2", "swagger-api/swagger-ui": "^3.0", "symfony/yaml": "^5.0", - "zircote/swagger-php": "~2.0|3.*" + "zircote/swagger-php": "3.*" }, "require-dev": { "mockery/mockery": "1.*", - "orchestra/testbench": "5.*", + "orchestra/testbench": "6.* || 5.*", "php-coveralls/php-coveralls": "^2.0", "phpunit/phpunit": "8.*" }, - "suggest": { - "zircote/swagger-php:~2.0": "!!! Require Swagger-PHP ~2.0 for @SWG annotations support !!!" - }, "type": "library", "extra": { "laravel": { @@ -9598,7 +9644,7 @@ "type": "github" } ], - "time": "2020-08-18T06:29:25+00:00" + "time": "2020-09-09T05:12:50+00:00" }, { "name": "doctrine/annotations", @@ -10215,35 +10261,35 @@ }, { "name": "nunomaduro/collision", - "version": "v4.2.0", + "version": "v5.0.2", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "d50490417eded97be300a92cd7df7badc37a9018" + "reference": "4a343299054e9368d0db4a982a780cc4ffa12707" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/d50490417eded97be300a92cd7df7badc37a9018", - "reference": "d50490417eded97be300a92cd7df7badc37a9018", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/4a343299054e9368d0db4a982a780cc4ffa12707", + "reference": "4a343299054e9368d0db4a982a780cc4ffa12707", "shasum": "" }, "require": { "facade/ignition-contracts": "^1.0", - "filp/whoops": "^2.4", - "php": "^7.2.5", + "filp/whoops": "^2.7.2", + "php": "^7.3", "symfony/console": "^5.0" }, "require-dev": { - "facade/ignition": "^2.0", - "fideloper/proxy": "^4.2", - "friendsofphp/php-cs-fixer": "^2.16", - "fruitcake/laravel-cors": "^1.0", - "laravel/framework": "^7.0", - "laravel/tinker": "^2.0", - "nunomaduro/larastan": "^0.5", - "orchestra/testbench": "^5.0", - "phpstan/phpstan": "^0.12.3", - "phpunit/phpunit": "^8.5.1 || ^9.0" + "fideloper/proxy": "^4.4.0", + "friendsofphp/php-cs-fixer": "^2.16.4", + "fruitcake/laravel-cors": "^2.0.1", + "laravel/framework": "^8.0", + "laravel/tinker": "^2.4.1", + "nunomaduro/larastan": "^0.6.2", + "nunomaduro/mock-final-classes": "^1.0", + "orchestra/testbench": "^6.0", + "phpstan/phpstan": "^0.12.36", + "phpunit/phpunit": "^9.3.3" }, "type": "library", "extra": { @@ -10295,32 +10341,33 @@ "type": "patreon" } ], - "time": "2020-04-04T19:56:08+00:00" + "time": "2020-08-27T18:58:22+00:00" }, { "name": "phar-io/manifest", - "version": "1.0.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^2.0", - "php": "^5.6 || ^7.0" + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -10350,24 +10397,24 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2018-07-08T19:23:20+00:00" + "time": "2020-06-27T14:33:11+00:00" }, { "name": "phar-io/version", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + "reference": "c6bb6825def89e0a32220f88337f8ceaf1975fa0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "url": "https://api.github.com/repos/phar-io/version/zipball/c6bb6825def89e0a32220f88337f8ceaf1975fa0", + "reference": "c6bb6825def89e0a32220f88337f8ceaf1975fa0", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -10397,7 +10444,7 @@ } ], "description": "Library for handling version information and constraints", - "time": "2018-07-08T19:19:57+00:00" + "time": "2020-06-27T14:39:04+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -10547,28 +10594,28 @@ }, { "name": "phpspec/prophecy", - "version": "1.11.1", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160" + "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b20034be5efcdab4fb60ca3a29cba2949aead160", - "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8ce87516be71aae9b956f81906aaf0338e0d8a2d", + "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d", "shasum": "" }, "require": { "doctrine/instantiator": "^1.2", - "php": "^7.2", - "phpdocumentor/reflection-docblock": "^5.0", + "php": "^7.2 || ~8.0, <8.1", + "phpdocumentor/reflection-docblock": "^5.2", "sebastian/comparator": "^3.0 || ^4.0", "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { "phpspec/phpspec": "^6.0", - "phpunit/phpunit": "^8.0" + "phpunit/phpunit": "^8.0 || ^9.0 <9.3" }, "type": "library", "extra": { @@ -10606,44 +10653,48 @@ "spy", "stub" ], - "time": "2020-07-08T12:44:21+00:00" + "time": "2020-09-29T09:10:42+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "7.0.10", + "version": "9.1.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf" + "reference": "c9394cb9d07ecfa9351b96f2e296bad473195f4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf", - "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c9394cb9d07ecfa9351b96f2e296bad473195f4d", + "reference": "c9394cb9d07ecfa9351b96f2e296bad473195f4d", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-xmlwriter": "*", - "php": "^7.2", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.1.1", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^4.2.2", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1.3" + "nikic/php-parser": "^4.8", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^8.2.2" + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-xdebug": "^2.7.2" + "ext-pcov": "*", + "ext-xdebug": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.0-dev" + "dev-master": "9.1-dev" } }, "autoload": { @@ -10669,32 +10720,38 @@ "testing", "xunit" ], - "time": "2019-11-20T13:55:58+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-19T05:29:17+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.2", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "050bedf145a257b1ff02746c31894800e5122946" + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", - "reference": "050bedf145a257b1ff02746c31894800e5122946", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -10719,26 +10776,99 @@ "filesystem", "iterator" ], - "time": "2018-09-13T20:33:42+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:57:25+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "phpunit/php-invoker", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "18c887016e60e52477e54534956d7b47bc52cd84" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/18c887016e60e52477e54534956d7b47bc52cd84", + "reference": "18c887016e60e52477e54534956d7b47bc52cd84", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -10760,32 +10890,38 @@ "keywords": [ "template" ], - "time": "2015-06-21T13:50:34+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:03:05+00:00" }, { "name": "phpunit/php-timer", - "version": "2.1.2", + "version": "5.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" + "reference": "c9ff14f493699e2f6adee9fd06a0245b276643b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/c9ff14f493699e2f6adee9fd06a0245b276643b7", + "reference": "c9ff14f493699e2f6adee9fd06a0245b276643b7", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -10809,106 +10945,65 @@ "keywords": [ "timer" ], - "time": "2019-06-07T04:22:29+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ + "funding": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "abandoned": true, - "time": "2019-09-17T06:23:10+00:00" + "time": "2020-09-28T06:00:25+00:00" }, { "name": "phpunit/phpunit", - "version": "8.5.8", + "version": "9.3.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "34c18baa6a44f1d1fbf0338907139e9dce95b997" + "reference": "f7316ea106df7c9507f4fdaa88c47bc10a3b27a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/34c18baa6a44f1d1fbf0338907139e9dce95b997", - "reference": "34c18baa6a44f1d1fbf0338907139e9dce95b997", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f7316ea106df7c9507f4fdaa88c47bc10a3b27a1", + "reference": "f7316ea106df7c9507f4fdaa88c47bc10a3b27a1", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2.0", + "doctrine/instantiator": "^1.3.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.9.1", - "phar-io/manifest": "^1.0.3", - "phar-io/version": "^2.0.1", - "php": "^7.2", - "phpspec/prophecy": "^1.8.1", - "phpunit/php-code-coverage": "^7.0.7", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", - "sebastian/comparator": "^3.0.2", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.2", - "sebastian/exporter": "^3.1.1", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", - "sebastian/version": "^2.0.1" + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.1", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.11.1", + "phpunit/php-code-coverage": "^9.1.11", + "phpunit/php-file-iterator": "^3.0.4", + "phpunit/php-invoker": "^3.1", + "phpunit/php-text-template": "^2.0.2", + "phpunit/php-timer": "^5.0.1", + "sebastian/cli-parser": "^1.0", + "sebastian/code-unit": "^1.0.5", + "sebastian/comparator": "^4.0.3", + "sebastian/diff": "^4.0.2", + "sebastian/environment": "^5.1.2", + "sebastian/exporter": "^4.0.2", + "sebastian/global-state": "^5.0", + "sebastian/object-enumerator": "^4.0.2", + "sebastian/resource-operations": "^3.0.2", + "sebastian/type": "^2.2.1", + "sebastian/version": "^3.0.1" }, "require-dev": { - "ext-pdo": "*" + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" }, "suggest": { "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0.0" + "ext-xdebug": "*" }, "bin": [ "phpunit" @@ -10916,12 +11011,15 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "8.5-dev" + "dev-master": "9.3-dev" } }, "autoload": { "classmap": [ "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -10952,7 +11050,7 @@ "type": "github" } ], - "time": "2020-06-22T07:06:58+00:00" + "time": "2020-09-24T08:08:49+00:00" }, { "name": "scrivo/highlight.php", @@ -11030,29 +11128,133 @@ "time": "2020-08-27T03:24:44+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", + "name": "sebastian/cli-parser", "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "d3a241b6028ff9d8e97d2b6ebd4090d01f92fad8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/d3a241b6028ff9d8e97d2b6ebd4090d01f92fad8", + "reference": "d3a241b6028ff9d8e97d2b6ebd4090d01f92fad8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:28:46+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" } }, "autoload": { @@ -11072,34 +11274,40 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" }, { "name": "sebastian/comparator", - "version": "3.0.2", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + "reference": "7a8ff306445707539c1a6397372a982a1ec55120" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/7a8ff306445707539c1a6397372a982a1ec55120", + "reference": "7a8ff306445707539c1a6397372a982a1ec55120", "shasum": "" }, "require": { - "php": "^7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -11112,6 +11320,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -11123,10 +11335,6 @@ { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" } ], "description": "Provides the functionality to compare PHP values for equality", @@ -11136,33 +11344,39 @@ "compare", "equality" ], - "time": "2018-07-12T15:12:46+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-30T06:47:25+00:00" }, { - "name": "sebastian/diff", - "version": "3.0.2", + "name": "sebastian/complexity", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "ba8cc2da0c0bfbc813d03b56406734030c7f1eff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ba8cc2da0c0bfbc813d03b56406734030c7f1eff", + "reference": "ba8cc2da0c0bfbc813d03b56406734030c7f1eff", "shasum": "" }, "require": { - "php": "^7.1" + "nikic/php-parser": "^4.7", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -11176,12 +11390,65 @@ ], "authors": [ { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:05:03+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "ffc949a1a2aae270ea064453d7535b82e4c32092" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ffc949a1a2aae270ea064453d7535b82e4c32092", + "reference": "ffc949a1a2aae270ea064453d7535b82e4c32092", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], "description": "Diff implementation", @@ -11192,27 +11459,33 @@ "unidiff", "unified diff" ], - "time": "2019-02-04T06:01:07+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:32:55+00:00" }, { "name": "sebastian/environment", - "version": "4.2.3", + "version": "5.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", - "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-posix": "*" @@ -11220,7 +11493,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -11245,34 +11518,40 @@ "environment", "hhvm" ], - "time": "2019-11-20T08:46:58+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:52:38+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.2", + "version": "4.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", - "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -11312,30 +11591,36 @@ "export", "exporter" ], - "time": "2019-09-14T09:02:43+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:24:23+00:00" }, { "name": "sebastian/global-state", - "version": "3.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" + "reference": "ea779cb749a478b22a2564ac41cd7bda79c78dc7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", - "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ea779cb749a478b22a2564ac41cd7bda79c78dc7", + "reference": "ea779cb749a478b22a2564ac41cd7bda79c78dc7", "shasum": "" }, "require": { - "php": "^7.2", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^8.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-uopz": "*" @@ -11343,7 +11628,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -11366,34 +11651,93 @@ "keywords": [ "global state" ], - "time": "2019-02-01T05:30:01+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:54:06+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "3.0.3", + "name": "sebastian/lines-of-code", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "6514b8f21906b8b46f520d1fbd17a4523fa59a54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/6514b8f21906b8b46f520d1fbd17a4523fa59a54", + "reference": "6514b8f21906b8b46f520d1fbd17a4523fa59a54", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "nikic/php-parser": "^4.6", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:07:27+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "f6f5957013d84725427d361507e13513702888a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f6f5957013d84725427d361507e13513702888a4", + "reference": "f6f5957013d84725427d361507e13513702888a4", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" } }, "autoload": { @@ -11413,122 +11757,33 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03T12:35:26+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:55:06+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.1", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" + "reference": "d9d0ab3b12acb1768bc1e0a89b23c90d2043cbe5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/d9d0ab3b12acb1768bc1e0a89b23c90d2043cbe5", + "reference": "d9d0ab3b12acb1768bc1e0a89b23c90d2043cbe5", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29T09:07:27+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "shasum": "" - }, - "require": { - "php": "^7.1" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { @@ -11551,34 +11806,150 @@ "email": "sebastian@phpunit.de" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2018-10-04T04:07:39+00:00" + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:56:16+00:00" }, { - "name": "sebastian/type", - "version": "1.1.3", + "name": "sebastian/recursion-context", + "version": "4.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "ed8c9cd355089134bc9cba421b5cfdd58f0eaef7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", - "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/ed8c9cd355089134bc9cba421b5cfdd58f0eaef7", + "reference": "ed8c9cd355089134bc9cba421b5cfdd58f0eaef7", "shasum": "" }, "require": { - "php": "^7.2" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.2" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:17:32+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "2.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "e494dcaeb89d1458c9ccd8c819745245a1669aea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/e494dcaeb89d1458c9ccd8c819745245a1669aea", + "reference": "e494dcaeb89d1458c9ccd8c819745245a1669aea", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" } }, "autoload": { @@ -11599,29 +11970,35 @@ ], "description": "Collection of value objects that represent the types of the PHP type system", "homepage": "https://github.com/sebastianbergmann/type", - "time": "2019-07-02T08:10:15+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:01:38+00:00" }, { "name": "sebastian/version", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -11642,7 +12019,13 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" }, { "name": "swagger-api/swagger-ui", @@ -11703,16 +12086,16 @@ }, { "name": "symfony/debug", - "version": "v4.4.13", + "version": "v4.4.14", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "aeb73aca16a8f1fe958230fe44e6cf4c84cbb85e" + "reference": "726b85e69342e767d60e3853b98559a68ff74183" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/aeb73aca16a8f1fe958230fe44e6cf4c84cbb85e", - "reference": "aeb73aca16a8f1fe958230fe44e6cf4c84cbb85e", + "url": "https://api.github.com/repos/symfony/debug/zipball/726b85e69342e767d60e3853b98559a68ff74183", + "reference": "726b85e69342e767d60e3853b98559a68ff74183", "shasum": "" }, "require": { @@ -11770,20 +12153,20 @@ "type": "tidelift" } ], - "time": "2020-08-10T07:47:39+00:00" + "time": "2020-09-09T05:20:36+00:00" }, { "name": "symfony/yaml", - "version": "v5.1.5", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "a44bd3a91bfbf8db12367fa6ffac9c3eb1a8804a" + "reference": "e147a68cb66a8b510f4b7481fe4da5b2ab65ec6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/a44bd3a91bfbf8db12367fa6ffac9c3eb1a8804a", - "reference": "a44bd3a91bfbf8db12367fa6ffac9c3eb1a8804a", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e147a68cb66a8b510f4b7481fe4da5b2ab65ec6a", + "reference": "e147a68cb66a8b510f4b7481fe4da5b2ab65ec6a", "shasum": "" }, "require": { @@ -11847,7 +12230,7 @@ "type": "tidelift" } ], - "time": "2020-08-26T08:30:57+00:00" + "time": "2020-09-27T03:44:28+00:00" }, { "name": "theseer/tokenizer", @@ -11946,24 +12329,24 @@ }, { "name": "wildbit/postmark-php", - "version": "2.11.0", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/wildbit/postmark-php.git", - "reference": "dd738b4de6d7dc3d296a1a7bad8f0b26f9693410" + "reference": "136e3d0884411ca23d0bac02470cfa1d14be676c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wildbit/postmark-php/zipball/dd738b4de6d7dc3d296a1a7bad8f0b26f9693410", - "reference": "dd738b4de6d7dc3d296a1a7bad8f0b26f9693410", + "url": "https://api.github.com/repos/wildbit/postmark-php/zipball/136e3d0884411ca23d0bac02470cfa1d14be676c", + "reference": "136e3d0884411ca23d0bac02470cfa1d14be676c", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "~6.0", - "php": ">=5.5.0" + "guzzlehttp/guzzle": "^6.0|^7.0", + "php": ">=7.0.0" }, "require-dev": { - "phpunit/phpunit": "4.4.0" + "phpunit/phpunit": "^6.0.0" }, "type": "library", "autoload": { @@ -11976,7 +12359,7 @@ "MIT" ], "description": "The officially supported client for Postmark (http://postmarkapp.com)", - "time": "2020-06-08T08:42:08+00:00" + "time": "2020-09-10T16:36:51+00:00" }, { "name": "zircote/swagger-php", diff --git a/config/ninja.php b/config/ninja.php index a32f6a39402d..c21ae376ba0f 100644 --- a/config/ninja.php +++ b/config/ninja.php @@ -29,7 +29,8 @@ return [ 'enabled_modules' => 32767, 'phantomjs_key' => env('PHANTOMJS_KEY', false), 'phantomjs_secret' => env('PHANTOMJS_SECRET', false), - + 'trusted_proxies' => env('TRUSTED_PROXIES', false), + 'sentry_dsn' => env('SENTRY_LARAVEL_DSN', 'https://9b4e15e575214354a7d666489783904a@sentry.invoicing.co/6'), 'environment' => env('NINJA_ENVIRONMENT', 'selfhost'), // 'hosted', 'development', 'selfhost', 'reseller' diff --git a/database/factories/AccountFactory.php b/database/factories/AccountFactory.php index dc068b1ae9ac..78017ca57e60 100644 --- a/database/factories/AccountFactory.php +++ b/database/factories/AccountFactory.php @@ -1,12 +1,40 @@ define(App\Models\Account::class, function (Faker $faker) { - return [ - 'default_company_id' => 1, - 'key' => Str::random(32), - 'report_errors' => 1, - ]; -}); +class AccountFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Account::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'default_company_id' => 1, + 'key' => Str::random(32), + 'report_errors' => 1, + ]; + } + +} diff --git a/database/factories/ClientContactFactory.php b/database/factories/ClientContactFactory.php index 1a46709125be..8a6d739774b6 100644 --- a/database/factories/ClientContactFactory.php +++ b/database/factories/ClientContactFactory.php @@ -1,28 +1,48 @@ $this->faker->firstName, + 'last_name' => $this->faker->lastName, + 'phone' => $this->faker->phoneNumber, + 'email_verified_at' => now(), + 'email' => $this->faker->unique()->safeEmail, + 'send_email' => true, + 'password' => bcrypt('password'), + 'remember_token' => \Illuminate\Support\Str::random(10), + 'contact_key' => \Illuminate\Support\Str::random(40), + ]; + } + +} -$factory->define(App\Models\ClientContact::class, function (Faker $faker) { - return [ - 'first_name' => $faker->firstName, - 'last_name' => $faker->lastName, - 'phone' => $faker->phoneNumber, - 'email_verified_at' => now(), - 'email' => $faker->unique()->safeEmail, - 'send_email' => true, - 'password' => bcrypt('password'), - 'remember_token' => \Illuminate\Support\Str::random(10), - 'contact_key' => \Illuminate\Support\Str::random(40), - ]; -}); diff --git a/database/factories/ClientFactory.php b/database/factories/ClientFactory.php index b30259928009..07f26b4e4401 100644 --- a/database/factories/ClientFactory.php +++ b/database/factories/ClientFactory.php @@ -1,35 +1,64 @@ define(App\Models\Client::class, function (Faker $faker) { - return [ - 'name' => $faker->company(), - 'website' => $faker->url, - 'private_notes' => $faker->text(200), - 'balance' => 0, - 'paid_to_date' => 0, - 'vat_number' => $faker->numberBetween(123456789, 987654321), - 'id_number' => '', - 'custom_value1' => '', - 'custom_value2' => '', - 'custom_value3' => '', - 'custom_value4' => '', - 'address1' => $faker->buildingNumber, - 'address2' => $faker->streetAddress, - 'city' => $faker->city, - 'state' => $faker->state, - 'postal_code' => $faker->postcode, - 'country_id' => 4, - 'shipping_address1' => $faker->buildingNumber, - 'shipping_address2' => $faker->streetAddress, - 'shipping_city' => $faker->city, - 'shipping_state' => $faker->state, - 'shipping_postal_code' => $faker->postcode, - 'shipping_country_id' => 4, - 'settings' => ClientSettings::defaults(), - 'client_hash' => \Illuminate\Support\Str::random(40), - ]; -}); +class ClientFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Client::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + + return [ + 'name' => $this->faker->company(), + 'website' => $this->faker->url, + 'private_notes' => $this->faker->text(200), + 'balance' => 0, + 'paid_to_date' => 0, + 'vat_number' => $this->faker->numberBetween(123456789, 987654321), + 'id_number' => '', + 'custom_value1' => '', + 'custom_value2' => '', + 'custom_value3' => '', + 'custom_value4' => '', + 'address1' => $this->faker->buildingNumber, + 'address2' => $this->faker->streetAddress, + 'city' => $this->faker->city, + 'state' => $this->faker->state, + 'postal_code' => $this->faker->postcode, + 'country_id' => 4, + 'shipping_address1' => $this->faker->buildingNumber, + 'shipping_address2' => $this->faker->streetAddress, + 'shipping_city' => $this->faker->city, + 'shipping_state' => $this->faker->state, + 'shipping_postal_code' => $this->faker->postcode, + 'shipping_country_id' => 4, + 'settings' => ClientSettings::defaults(), + 'client_hash' => \Illuminate\Support\Str::random(40), + ]; + } +} \ No newline at end of file diff --git a/database/factories/ClientLocationFactory.php b/database/factories/ClientLocationFactory.php deleted file mode 100644 index 179da5ebc6d9..000000000000 --- a/database/factories/ClientLocationFactory.php +++ /dev/null @@ -1,18 +0,0 @@ -define(App\Models\ClientLocation::class, function (Faker $faker) { - return [ - 'address1' => $faker->buildingNumber, - 'address2' => $faker->streetAddress, - 'city' => $faker->city, - 'state' => $faker->state, - 'postal_code' => $faker->postcode, - 'country_id' => 4, - 'latitude' => $faker->latitude, - 'longitude' => $faker->longitude, - 'description' => $faker->paragraph, - 'private_notes' => $faker->paragraph, - ]; -}); diff --git a/database/factories/CompanyFactory.php b/database/factories/CompanyFactory.php index 0308c4fe512e..b01724b8ace8 100644 --- a/database/factories/CompanyFactory.php +++ b/database/factories/CompanyFactory.php @@ -1,29 +1,58 @@ define(App\Models\Company::class, function (Faker $faker) { - return [ - //'name' => $faker->name, - 'company_key' => strtolower(\Illuminate\Support\Str::random(config('ninja.key_length'))), - 'ip' => $faker->ipv4, - 'db' => config('database.default'), - 'settings' => CompanySettings::defaults(), - 'is_large' => false, - 'custom_fields' => (object) [ - //'invoice1' => 'Custom Date|date', - // 'invoice2' => '2|switch', - // 'invoice3' => '3|', - // 'invoice4' => '4', - // 'client1'=>'1', - // 'client2'=>'2', - // 'client3'=>'3|date', - // 'client4'=>'4|switch', - // 'company1'=>'1|date', - // 'company2'=>'2|switch', - // 'company3'=>'3', - // 'company4'=>'4', - ], - ]; -}); +class CompanyFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Company::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + //'name' => $this->faker->name, + 'company_key' => strtolower(\Illuminate\Support\Str::random(config('ninja.key_length'))), + 'ip' => $this->faker->ipv4, + 'db' => config('database.default'), + 'settings' => CompanySettings::defaults(), + 'is_large' => false, + 'custom_fields' => (object) [ + //'invoice1' => 'Custom Date|date', + // 'invoice2' => '2|switch', + // 'invoice3' => '3|', + // 'invoice4' => '4', + // 'client1'=>'1', + // 'client2'=>'2', + // 'client3'=>'3|date', + // 'client4'=>'4|switch', + // 'company1'=>'1|date', + // 'company2'=>'2|switch', + // 'company3'=>'3', + // 'company4'=>'4', + ], + ]; + } +} diff --git a/database/factories/CreditFactory.php b/database/factories/CreditFactory.php index e24b867432b3..dd60d0e0ef53 100644 --- a/database/factories/CreditFactory.php +++ b/database/factories/CreditFactory.php @@ -1,30 +1,59 @@ define(App\Models\Credit::class, function (Faker $faker) { - return [ - 'status_id' => App\Models\Credit::STATUS_DRAFT, - 'discount' => $faker->numberBetween(1, 10), - 'is_amount_discount' => (bool) random_int(0, 1), - 'tax_name1' => 'GST', - 'tax_rate1' => 10, - 'tax_name2' => 'VAT', - 'tax_rate2' => 17.5, - //'tax_name3' => 'THIRDTAX', - //'tax_rate3' => 5, - // 'custom_value1' => $faker->numberBetween(1,4), - // 'custom_value2' => $faker->numberBetween(1,4), - // 'custom_value3' => $faker->numberBetween(1,4), - // 'custom_value4' => $faker->numberBetween(1,4), - 'is_deleted' => false, - 'po_number' => $faker->text(10), - 'date' => $faker->date(), - 'due_date' => $faker->date(), - 'line_items' => InvoiceItemFactory::generateCredit(5), - 'terms' => $faker->text(500), - ]; -}); +class CreditFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Credit::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'status_id' => Credit::STATUS_DRAFT, + 'discount' => $this->faker->numberBetween(1, 10), + 'is_amount_discount' => (bool) random_int(0, 1), + 'tax_name1' => 'GST', + 'tax_rate1' => 10, + 'tax_name2' => 'VAT', + 'tax_rate2' => 17.5, + //'tax_name3' => 'THIRDTAX', + //'tax_rate3' => 5, + // 'custom_value1' => $this->faker->numberBetween(1,4), + // 'custom_value2' => $this->faker->numberBetween(1,4), + // 'custom_value3' => $this->faker->numberBetween(1,4), + // 'custom_value4' => $this->faker->numberBetween(1,4), + 'is_deleted' => false, + 'po_number' => $this->faker->text(10), + 'date' => $this->faker->date(), + 'due_date' => $this->faker->date(), + 'line_items' => InvoiceItemFactory::generateCredit(5), + 'terms' => $this->faker->text(500), + ]; + } +} diff --git a/database/factories/ExpenseFactory.php b/database/factories/ExpenseFactory.php index 31ad21ab0f6c..675b801328f5 100644 --- a/database/factories/ExpenseFactory.php +++ b/database/factories/ExpenseFactory.php @@ -1,22 +1,47 @@ define(App\Models\Expense::class, function (Faker $faker) { - return [ - 'amount' => $faker->numberBetween(1, 10), - 'custom_value1' => $faker->text(10), - 'custom_value2' => $faker->text(10), - 'custom_value3' => $faker->text(10), - 'custom_value4' => $faker->text(10), - 'exchange_rate' => $faker->randomFloat(2, 0, 1), - 'expense_date' => $faker->date(), - 'is_deleted' => false, - 'public_notes' => $faker->text(50), - 'private_notes' => $faker->text(50), - 'transaction_reference' => $faker->text(5), - ]; -}); +class ExpenseFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Expense::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'amount' => $this->faker->numberBetween(1, 10), + 'custom_value1' => $this->faker->text(10), + 'custom_value2' => $this->faker->text(10), + 'custom_value3' => $this->faker->text(10), + 'custom_value4' => $this->faker->text(10), + 'exchange_rate' => $this->faker->randomFloat(2, 0, 1), + 'expense_date' => $this->faker->date(), + 'is_deleted' => false, + 'public_notes' => $this->faker->text(50), + 'private_notes' => $this->faker->text(50), + 'transaction_reference' => $this->faker->text(5), + ]; + } +} diff --git a/database/factories/GatewayFactory.php b/database/factories/GatewayFactory.php index 744af9ab603b..e1c61cf3d7ca 100644 --- a/database/factories/GatewayFactory.php +++ b/database/factories/GatewayFactory.php @@ -1,17 +1,45 @@ define(App\Models\Gateway::class, function (Faker $faker) { - return [ - 'key' => '3b6621f970ab18887c4f6dca78d3f8bb', - 'visible' => true, - 'sort_order' =>1, - 'name' => 'demo', - 'provider' => 'test', - 'is_offsite' => true, - 'is_secure' => true, - 'fields' => '', - 'default_gateway_type_id' => 1, - ]; -}); +class GatewayFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Gateway::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'key' => '3b6621f970ab18887c4f6dca78d3f8bb', + 'visible' => true, + 'sort_order' =>1, + 'name' => 'demo', + 'provider' => 'test', + 'is_offsite' => true, + 'is_secure' => true, + 'fields' => '', + 'default_gateway_type_id' => 1, + ]; + } +} \ No newline at end of file diff --git a/database/factories/InvoiceFactory.php b/database/factories/InvoiceFactory.php index 61d416af41ef..7562a1d62c60 100644 --- a/database/factories/InvoiceFactory.php +++ b/database/factories/InvoiceFactory.php @@ -1,31 +1,60 @@ define(App\Models\Invoice::class, function (Faker $faker) { - return [ - 'status_id' => App\Models\Invoice::STATUS_SENT, - 'number' => $faker->ean13(), - 'discount' => $faker->numberBetween(1, 10), - 'is_amount_discount' => (bool) random_int(0, 1), - 'tax_name1' => 'GST', - 'tax_rate1' => 10, - 'tax_name2' => 'VAT', - 'tax_rate2' => 17.5, - //'tax_name3' => 'THIRDTAX', - //'tax_rate3' => 5, - 'custom_value1' => $faker->date, - 'custom_value2' => rand(0, 1) ? 'yes' : 'no', - // 'custom_value3' => $faker->numberBetween(1,4), - // 'custom_value4' => $faker->numberBetween(1,4), - 'is_deleted' => false, - 'po_number' => $faker->text(10), - 'date' => $faker->date(), - 'due_date' => $faker->date(), - 'line_items' => InvoiceItemFactory::generate(5), - 'terms' => $faker->text(500), - ]; -}); +class InvoiceFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Invoice::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'status_id' => Invoice::STATUS_SENT, + 'number' => $this->faker->ean13(), + 'discount' => $this->faker->numberBetween(1, 10), + 'is_amount_discount' => (bool) random_int(0, 1), + 'tax_name1' => 'GST', + 'tax_rate1' => 10, + 'tax_name2' => 'VAT', + 'tax_rate2' => 17.5, + //'tax_name3' => 'THIRDTAX', + //'tax_rate3' => 5, + 'custom_value1' => $this->faker->date, + 'custom_value2' => rand(0, 1) ? 'yes' : 'no', + // 'custom_value3' => $this->faker->numberBetween(1,4), + // 'custom_value4' => $this->faker->numberBetween(1,4), + 'is_deleted' => false, + 'po_number' => $this->faker->text(10), + 'date' => $this->faker->date(), + 'due_date' => $this->faker->date(), + 'line_items' => InvoiceItemFactory::generate(5), + 'terms' => $this->faker->text(500), + ]; + } +} \ No newline at end of file diff --git a/database/factories/InvoiceInvitationFactory.php b/database/factories/InvoiceInvitationFactory.php index 8eb6abba473a..8d462245a274 100644 --- a/database/factories/InvoiceInvitationFactory.php +++ b/database/factories/InvoiceInvitationFactory.php @@ -1,10 +1,37 @@ define(App\Models\InvoiceInvitation::class, function (Faker $faker) { - return [ - 'key' => Str::random(40), - ]; -}); +class InvoiceInvitationFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = InvoiceInvitation::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'key' => Str::random(40), + ]; + } +} \ No newline at end of file diff --git a/database/factories/PaymentFactory.php b/database/factories/PaymentFactory.php index 32c6b10315f0..83088b5c7d81 100644 --- a/database/factories/PaymentFactory.php +++ b/database/factories/PaymentFactory.php @@ -1,17 +1,44 @@ define(App\Models\Payment::class, function (Faker $faker) { - return [ - 'is_deleted' => false, - 'amount' => $faker->numberBetween(1, 10), - 'date' => $faker->date(), - 'transaction_reference' => $faker->text(10), - 'type_id' => Payment::TYPE_CREDIT_CARD, - 'status_id' => Payment::STATUS_COMPLETED, - ]; -}); +class PaymentFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Payment::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'is_deleted' => false, + 'amount' => $this->faker->numberBetween(1, 10), + 'date' => $this->faker->date(), + 'transaction_reference' => $this->faker->text(10), + 'type_id' => Payment::TYPE_CREDIT_CARD, + 'status_id' => Payment::STATUS_COMPLETED, + ]; + } +} \ No newline at end of file diff --git a/database/factories/ProductFactory.php b/database/factories/ProductFactory.php index 342cbe52a6ac..d55e061f6450 100644 --- a/database/factories/ProductFactory.php +++ b/database/factories/ProductFactory.php @@ -1,24 +1,53 @@ define(App\Models\Product::class, function (Faker $faker) { - return [ - 'product_key' => $faker->text(7), - 'notes' => $faker->text(20), - 'cost' => $faker->numberBetween(1, 1000), - 'price' => $faker->numberBetween(1, 1000), - 'quantity' => $faker->numberBetween(1, 100), - 'tax_name1' => 'GST', - 'tax_rate1' => 10, - 'tax_name2' => 'VAT', - 'tax_rate2' => 17.5, - 'tax_name3' => 'THIRDTAX', - 'tax_rate3' => 5, - 'custom_value1' => $faker->text(20), - 'custom_value2' => $faker->text(20), - 'custom_value3' => $faker->text(20), - 'custom_value4' => $faker->text(20), - 'is_deleted' => false, - ]; -}); +use App\Models\Product; +use Illuminate\Database\Eloquent\Factories\Factory; +use Illuminate\Support\Str; + +class ProductFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Product::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'product_key' => $this->faker->text(7), + 'notes' => $this->faker->text(20), + 'cost' => $this->faker->numberBetween(1, 1000), + 'price' => $this->faker->numberBetween(1, 1000), + 'quantity' => $this->faker->numberBetween(1, 100), + 'tax_name1' => 'GST', + 'tax_rate1' => 10, + 'tax_name2' => 'VAT', + 'tax_rate2' => 17.5, + 'tax_name3' => 'THIRDTAX', + 'tax_rate3' => 5, + 'custom_value1' => $this->faker->text(20), + 'custom_value2' => $this->faker->text(20), + 'custom_value3' => $this->faker->text(20), + 'custom_value4' => $this->faker->text(20), + 'is_deleted' => false, + ]; + } +} \ No newline at end of file diff --git a/database/factories/ProjectFactory.php b/database/factories/ProjectFactory.php index 859745cb7b98..06083f94302e 100644 --- a/database/factories/ProjectFactory.php +++ b/database/factories/ProjectFactory.php @@ -1,12 +1,40 @@ define(App\Models\Project::class, function (Faker $faker) { - return [ - 'name' => $faker->name(), - 'description' => $faker->text(50), - ]; -}); + +use App\Models\Project; +use Illuminate\Database\Eloquent\Factories\Factory; +use Illuminate\Support\Str; + +class ProjectFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Project::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'name' => $this->faker->name(), + 'description' => $this->faker->text(50), + ]; + } +} diff --git a/database/factories/QuoteFactory.php b/database/factories/QuoteFactory.php index 54d87288fcc1..243cb66a1c4f 100644 --- a/database/factories/QuoteFactory.php +++ b/database/factories/QuoteFactory.php @@ -1,26 +1,53 @@ define(App\Models\Quote::class, function (Faker $faker) { - return [ - 'status_id' => App\Models\Quote::STATUS_DRAFT, - 'discount' => $faker->numberBetween(1, 10), - 'is_amount_discount' => $faker->boolean(), - 'tax_name1' => 'GST', - 'tax_rate1' => 10, - 'tax_name2' => 'VAT', - 'tax_rate2' => 17.5, - 'tax_name3' => 'THIRDTAX', - 'tax_rate3' => 5, - // 'custom_value1' => $faker->numberBetween(1, 4), - // 'custom_value2' => $faker->numberBetween(1, 4), - // 'custom_value3' => $faker->numberBetween(1, 4), - // 'custom_value4' => $faker->numberBetween(1, 4), - 'is_deleted' => false, - 'po_number' => $faker->text(10), - 'line_items' => false, - ]; -}); +use App\Models\Quote; +use Illuminate\Database\Eloquent\Factories\Factory; +use Illuminate\Support\Str; + +class QuoteFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Quote::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'status_id' => Quote::STATUS_DRAFT, + 'discount' => $this->faker->numberBetween(1, 10), + 'is_amount_discount' => $this->faker->boolean(), + 'tax_name1' => 'GST', + 'tax_rate1' => 10, + 'tax_name2' => 'VAT', + 'tax_rate2' => 17.5, + 'tax_name3' => 'THIRDTAX', + 'tax_rate3' => 5, + // 'custom_value1' => $this->faker->numberBetween(1, 4), + // 'custom_value2' => $this->faker->numberBetween(1, 4), + // 'custom_value3' => $this->faker->numberBetween(1, 4), + // 'custom_value4' => $this->faker->numberBetween(1, 4), + 'is_deleted' => false, + 'po_number' => $this->faker->text(10), + 'line_items' => false, + ]; + } +} \ No newline at end of file diff --git a/database/factories/QuoteInvitationFactory.php b/database/factories/QuoteInvitationFactory.php index 2cf3b27210e6..1a1cffc34d2f 100644 --- a/database/factories/QuoteInvitationFactory.php +++ b/database/factories/QuoteInvitationFactory.php @@ -1,10 +1,38 @@ define(App\Models\QuoteInvitation::class, function (Faker $faker) { - return [ - 'key' => Str::random(40), - ]; -}); +class QuoteInvitationFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = QuoteInvitation::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'key' => Str::random(40), + ]; + } +} diff --git a/database/factories/RecurringInvoiceFactory.php b/database/factories/RecurringInvoiceFactory.php index 44b9410959dd..34b6ff30311d 100644 --- a/database/factories/RecurringInvoiceFactory.php +++ b/database/factories/RecurringInvoiceFactory.php @@ -1,34 +1,61 @@ define(App\Models\RecurringInvoice::class, function (Faker $faker) { - return [ - 'status_id' => App\Models\RecurringInvoice::STATUS_ACTIVE, - 'discount' => $faker->numberBetween(1, 10), - 'is_amount_discount' => $faker->boolean(), - 'tax_name1' => 'GST', - 'tax_rate1' => 10, - 'tax_name2' => 'VAT', - 'tax_rate2' => 17.5, - 'tax_name3' => 'THIRDTAX', - 'tax_rate3' => 5, - 'custom_value1' => $faker->numberBetween(1, 4), - 'custom_value2' => $faker->numberBetween(1, 4), - 'custom_value3' => $faker->numberBetween(1, 4), - 'custom_value4' => $faker->numberBetween(1, 4), - 'is_deleted' => false, - 'po_number' => $faker->text(10), - 'date' => $faker->date(), - 'due_date' => $faker->date(), - 'line_items' => false, - 'frequency_id' => App\Models\RecurringInvoice::FREQUENCY_MONTHLY, - 'last_sent_date' => now()->subMonth(), - 'next_send_date' => now()->addMonthNoOverflow(), - 'remaining_cycles' => $faker->numberBetween(1, 10), - 'amount' => $faker->randomFloat(2, $min = 1, $max = 1000), // 48.8932 +use App\Models\RecurringInvoice; +use Illuminate\Database\Eloquent\Factories\Factory; +use Illuminate\Support\Str; - ]; -}); +class RecurringInvoiceFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = RecurringInvoice::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'status_id' => RecurringInvoice::STATUS_ACTIVE, + 'discount' => $this->faker->numberBetween(1, 10), + 'is_amount_discount' => $this->faker->boolean(), + 'tax_name1' => 'GST', + 'tax_rate1' => 10, + 'tax_name2' => 'VAT', + 'tax_rate2' => 17.5, + 'tax_name3' => 'THIRDTAX', + 'tax_rate3' => 5, + 'custom_value1' => $this->faker->numberBetween(1, 4), + 'custom_value2' => $this->faker->numberBetween(1, 4), + 'custom_value3' => $this->faker->numberBetween(1, 4), + 'custom_value4' => $this->faker->numberBetween(1, 4), + 'is_deleted' => false, + 'po_number' => $this->faker->text(10), + 'date' => $this->faker->date(), + 'due_date' => $this->faker->date(), + 'line_items' => false, + 'frequency_id' => RecurringInvoice::FREQUENCY_MONTHLY, + 'last_sent_date' => now()->subMonth(), + 'next_send_date' => now()->addMonthNoOverflow(), + 'remaining_cycles' => $this->faker->numberBetween(1, 10), + 'amount' => $this->faker->randomFloat(2, $min = 1, $max = 1000), // 48.8932 + + ]; + } +} diff --git a/database/factories/RecurringQuoteFactory.php b/database/factories/RecurringQuoteFactory.php index 8bbcdd91aedb..6b76d48baf77 100644 --- a/database/factories/RecurringQuoteFactory.php +++ b/database/factories/RecurringQuoteFactory.php @@ -1,34 +1,61 @@ define(App\Models\RecurringQuote::class, function (Faker $faker) { - return [ - 'status_id' => App\Models\RecurringQuote::STATUS_DRAFT, - 'number' => $faker->text(256), - 'discount' => $faker->numberBetween(1, 10), - 'is_amount_discount' => $faker->boolean(), - 'tax_name1' => 'GST', - 'tax_rate1' => 10, - 'tax_name2' => 'VAT', - 'tax_rate2' => 17.5, - 'tax_name3' => 'THIRDTAX', - 'tax_rate3' => 5, - 'custom_value1' => $faker->numberBetween(1, 4), - 'custom_value2' => $faker->numberBetween(1, 4), - 'custom_value3' => $faker->numberBetween(1, 4), - 'custom_value4' => $faker->numberBetween(1, 4), - 'is_deleted' => false, - 'po_number' => $faker->text(10), - 'date' => $faker->date(), - 'due_date' => $faker->date(), - 'line_items' => false, - 'frequency_id' => App\Models\RecurringQuote::FREQUENCY_MONTHLY, - 'start_date' => $faker->date(), - 'last_sent_date' => $faker->date(), - 'next_send_date' => $faker->date(), - 'remaining_cycles' => $faker->numberBetween(1, 10), - ]; -}); +class RecurringQuoteFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = RecurringQuote::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'status_id' => RecurringQuote::STATUS_DRAFT, + 'number' => $this->faker->text(256), + 'discount' => $this->faker->numberBetween(1, 10), + 'is_amount_discount' => $this->faker->boolean(), + 'tax_name1' => 'GST', + 'tax_rate1' => 10, + 'tax_name2' => 'VAT', + 'tax_rate2' => 17.5, + 'tax_name3' => 'THIRDTAX', + 'tax_rate3' => 5, + 'custom_value1' => $this->faker->numberBetween(1, 4), + 'custom_value2' => $this->faker->numberBetween(1, 4), + 'custom_value3' => $this->faker->numberBetween(1, 4), + 'custom_value4' => $this->faker->numberBetween(1, 4), + 'is_deleted' => false, + 'po_number' => $this->faker->text(10), + 'date' => $this->faker->date(), + 'due_date' => $this->faker->date(), + 'line_items' => false, + 'frequency_id' => RecurringQuote::FREQUENCY_MONTHLY, + 'start_date' => $this->faker->date(), + 'last_sent_date' => $this->faker->date(), + 'next_send_date' => $this->faker->date(), + 'remaining_cycles' => $this->faker->numberBetween(1, 10), + ]; + } +} diff --git a/database/factories/TaskFactory.php b/database/factories/TaskFactory.php index d01f8781d648..759114c9d8f2 100644 --- a/database/factories/TaskFactory.php +++ b/database/factories/TaskFactory.php @@ -1,11 +1,38 @@ define(App\Models\Task::class, function (Faker $faker) { - return [ - 'description' => $faker->text(50), - ]; -}); +use App\Models\Task; +use Illuminate\Database\Eloquent\Factories\Factory; +use Illuminate\Support\Str; + +class TaskFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Task::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'description' => $this->faker->text(50), + ]; + } +} \ No newline at end of file diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index cf974883efc6..598f1a4deb9b 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -1,26 +1,44 @@ define(App\Models\User::class, function (Faker $faker) { - return [ - 'first_name' => $faker->name, - 'last_name' => $faker->name, - 'phone' => $faker->phoneNumber, - 'email' => config('ninja.testvars.username'), - 'email_verified_at' => now(), - 'password' => bcrypt(config('ninja.testvars.password')), // secret - 'remember_token' => \Illuminate\Support\Str::random(10), - ]; -}); +class UserFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = User::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'first_name' => $this->faker->name, + 'last_name' => $this->faker->name, + 'phone' => $this->faker->phoneNumber, + 'email' => config('ninja.testvars.username'), + 'email_verified_at' => now(), + 'password' => bcrypt(config('ninja.testvars.password')), // secret + 'remember_token' => \Illuminate\Support\Str::random(10), + ]; + } +} diff --git a/database/factories/VendorContactFactory.php b/database/factories/VendorContactFactory.php index 679a44032877..13fa826bb304 100644 --- a/database/factories/VendorContactFactory.php +++ b/database/factories/VendorContactFactory.php @@ -1,23 +1,41 @@ define(App\Models\VendorContact::class, function (Faker $faker) { - return [ - 'first_name' => $faker->firstName, - 'last_name' => $faker->lastName, - 'phone' => $faker->phoneNumber, - 'email' => $faker->unique()->safeEmail, - ]; -}); +class VendorContactFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = VendorContact::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'first_name' => $this->faker->firstName, + 'last_name' => $this->faker->lastName, + 'phone' => $this->faker->phoneNumber, + 'email' => $this->faker->unique()->safeEmail, + ]; + } +} \ No newline at end of file diff --git a/database/factories/VendorFactory.php b/database/factories/VendorFactory.php index 9f28f2999893..8c4830a31f47 100644 --- a/database/factories/VendorFactory.php +++ b/database/factories/VendorFactory.php @@ -1,23 +1,51 @@ define(App\Models\Vendor::class, function (Faker $faker) { - return [ - 'name' => $faker->name(), - 'website' => $faker->url, - 'private_notes' => $faker->text(200), - 'vat_number' => $faker->text(25), - 'id_number' => $faker->text(20), - 'custom_value1' => $faker->text(20), - 'custom_value2' => $faker->text(20), - 'custom_value3' => $faker->text(20), - 'custom_value4' => $faker->text(20), - 'address1' => $faker->buildingNumber, - 'address2' => $faker->streetAddress, - 'city' => $faker->city, - 'state' => $faker->state, - 'postal_code' => $faker->postcode, - 'country_id' => 4, - ]; -}); +class VendorFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Vendor::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'name' => $this->faker->name(), + 'website' => $this->faker->url, + 'private_notes' => $this->faker->text(200), + 'vat_number' => $this->faker->text(25), + 'id_number' => $this->faker->text(20), + 'custom_value1' => $this->faker->text(20), + 'custom_value2' => $this->faker->text(20), + 'custom_value3' => $this->faker->text(20), + 'custom_value4' => $this->faker->text(20), + 'address1' => $this->faker->buildingNumber, + 'address2' => $this->faker->streetAddress, + 'city' => $this->faker->city, + 'state' => $this->faker->state, + 'postal_code' => $this->faker->postcode, + 'country_id' => 4, + ]; + } +} \ No newline at end of file diff --git a/database/migrations/2020_09_27_215800_update_gateway_table_visible_column.php b/database/migrations/2020_09_27_215800_update_gateway_table_visible_column.php index 66558cbb13fa..607bfdb2865e 100644 --- a/database/migrations/2020_09_27_215800_update_gateway_table_visible_column.php +++ b/database/migrations/2020_09_27_215800_update_gateway_table_visible_column.php @@ -17,8 +17,11 @@ class UpdateGatewayTableVisibleColumn extends Migration Gateway::query()->update(['visible' => 0]); Gateway::whereIn('id', [1,15,20,39])->update(['visible' => 1]); + } + + /** * Reverse the migrations. * diff --git a/database/seeds/BanksSeeder.php b/database/seeders/BanksSeeder.php similarity index 99% rename from database/seeds/BanksSeeder.php rename to database/seeders/BanksSeeder.php index 2eca0929e046..107715a4e4ca 100644 --- a/database/seeds/BanksSeeder.php +++ b/database/seeders/BanksSeeder.php @@ -1,13 +1,24 @@ createBanks(); } @@ -22,7 +33,7 @@ class BanksSeeder extends Seeder $banks = json_decode($banks); foreach ($banks as $bank) { - if (! DB::table('banks')->where('remote_id', '=', $bank->id)->count()) { + if (! \DB::table('banks')->where('remote_id', '=', $bank->id)->count()) { if (! isset($bank->fid) || ! isset($bank->org)) { continue; } diff --git a/database/seeds/ConstantsSeeder.php b/database/seeders/ConstantsSeeder.php similarity index 97% rename from database/seeds/ConstantsSeeder.php rename to database/seeders/ConstantsSeeder.php index 66d6607ca701..64de9971d052 100644 --- a/database/seeds/ConstantsSeeder.php +++ b/database/seeders/ConstantsSeeder.php @@ -1,4 +1,15 @@ getList(); foreach ($countries as $countryId => $country) { if ($record = Country::whereCountryCode($country['country-code'])->first()) { diff --git a/database/seeds/CurrenciesSeeder.php b/database/seeders/CurrenciesSeeder.php similarity index 97% rename from database/seeds/CurrenciesSeeder.php rename to database/seeders/CurrenciesSeeder.php index 5ed060cd9977..850511099278 100644 --- a/database/seeds/CurrenciesSeeder.php +++ b/database/seeders/CurrenciesSeeder.php @@ -1,13 +1,25 @@ command->info('Running DatabaseSeeder'); + + if (Timezone::count()) { + $this->command->info('Skipping: already run'); + + return; + } + + Model::unguard(); + + $this->call([ + ConstantsSeeder::class, + PaymentLibrariesSeeder::class, + BanksSeeder::class, + CurrenciesSeeder::class, + LanguageSeeder::class, + CountriesSeeder::class, + IndustrySeeder::class, + PaymentTypesSeeder::class, + GatewayTypesSeeder::class, + DateFormatsSeeder::class, + DesignSeeder::class, + ]); + + } +} diff --git a/database/seeds/DateFormatsSeeder.php b/database/seeders/DateFormatsSeeder.php similarity index 92% rename from database/seeds/DateFormatsSeeder.php rename to database/seeders/DateFormatsSeeder.php index 6be42eaea94e..c774eed66252 100644 --- a/database/seeds/DateFormatsSeeder.php +++ b/database/seeders/DateFormatsSeeder.php @@ -1,14 +1,26 @@ createDesigns(); } diff --git a/database/seeds/GatewayTypesSeeder.php b/database/seeders/GatewayTypesSeeder.php similarity index 80% rename from database/seeds/GatewayTypesSeeder.php rename to database/seeders/GatewayTypesSeeder.php index b85a135fd992..25a814132bdb 100644 --- a/database/seeds/GatewayTypesSeeder.php +++ b/database/seeders/GatewayTypesSeeder.php @@ -1,13 +1,25 @@ 1, 'alias' => 'credit_card', 'name' => 'Credit Card'], diff --git a/database/seeds/IndustrySeeder.php b/database/seeders/IndustrySeeder.php similarity index 85% rename from database/seeds/IndustrySeeder.php rename to database/seeders/IndustrySeeder.php index 461432d19e9a..e89cf43cca56 100644 --- a/database/seeds/IndustrySeeder.php +++ b/database/seeders/IndustrySeeder.php @@ -1,13 +1,25 @@ 1, 'name' => 'Accounting & Legal'], @@ -52,6 +64,5 @@ class IndustrySeeder extends Seeder } } - Eloquent::reguard(); } } diff --git a/database/seeds/LanguageSeeder.php b/database/seeders/LanguageSeeder.php similarity index 87% rename from database/seeds/LanguageSeeder.php rename to database/seeders/LanguageSeeder.php index 44539b06a779..6311a6b86857 100644 --- a/database/seeds/LanguageSeeder.php +++ b/database/seeders/LanguageSeeder.php @@ -1,13 +1,25 @@ 1, 'name' => 'Authorize.Net', 'provider' => 'Authorize', 'sort_order' => 5, 'key' => '3b6621f970ab18887c4f6dca78d3f8bb', 'fields' => '{"apiLoginId":"","transactionKey":"","testMode":false,"developerMode":false,"liveEndpoint":"https:\/\/api2.authorize.net\/xml\/v1\/request.api","developerEndpoint":"https:\/\/apitest.authorize.net\/xml\/v1\/request.api"} @@ -81,5 +93,16 @@ class PaymentLibrariesSeeder extends Seeder Gateway::create($gateway); } } + + Gateway::query()->update(['visible' => 0]); + + Gateway::whereIn('id', [1,15,20,39])->update(['visible' => 1]); + + Gateway::all()->each(function ($gateway){ + + $gateway->site_url = $gateway->getHelp(); + $gateway->save(); + + }); } } diff --git a/database/seeds/PaymentTermsSeeder.php b/database/seeders/PaymentTermsSeeder.php similarity index 65% rename from database/seeds/PaymentTermsSeeder.php rename to database/seeders/PaymentTermsSeeder.php index 8964832d4835..a0c4c62f0087 100644 --- a/database/seeds/PaymentTermsSeeder.php +++ b/database/seeders/PaymentTermsSeeder.php @@ -1,13 +1,25 @@ 0, 'name' => 'Net 0'], diff --git a/database/seeds/PaymentTypesSeeder.php b/database/seeders/PaymentTypesSeeder.php similarity index 91% rename from database/seeds/PaymentTypesSeeder.php rename to database/seeders/PaymentTypesSeeder.php index 57df0455feb3..cef35ed5b994 100644 --- a/database/seeds/PaymentTypesSeeder.php +++ b/database/seeders/PaymentTypesSeeder.php @@ -1,6 +1,18 @@ 'Apply Credit'], diff --git a/database/seeds/RandomDataSeeder.php b/database/seeders/RandomDataSeeder.php similarity index 88% rename from database/seeds/RandomDataSeeder.php rename to database/seeders/RandomDataSeeder.php index 932e5edb6efd..e0c4991d8413 100644 --- a/database/seeds/RandomDataSeeder.php +++ b/database/seeders/RandomDataSeeder.php @@ -1,4 +1,14 @@ command->info('Running RandomDataSeeder'); - Eloquent::unguard(); + Model::unguard(); $faker = \Faker\Factory::create(); - $account = factory(\App\Models\Account::class)->create(); - $company = factory(\App\Models\Company::class)->create([ + $account = Account::factory()->create(); + $company = Company::factory()->create([ 'account_id' => $account->id, ]); $account->default_company_id = $company->id; $account->save(); - $user = factory(\App\Models\User::class)->create([ + $user = User::factory()->create([ 'email' => $faker->email, 'account_id' => $account->id, 'confirmation_code' => $this->createDbHash(config('database.default')), @@ -111,7 +124,7 @@ class RandomDataSeeder extends Seeder $u2 = User::where('email', 'demo@invoiceninja.com')->first(); if (! $u2) { - $u2 = factory(\App\Models\User::class)->create([ + $u2 = User::factory()->create([ 'email' => 'demo@invoiceninja.com', 'password' => Hash::make('demo'), 'account_id' => $account->id, @@ -137,7 +150,7 @@ class RandomDataSeeder extends Seeder ]); } - $client = factory(\App\Models\Client::class)->create([ + $client = Client::factory()->create([ 'user_id' => $user->id, 'company_id' => $company->id, ]); @@ -155,15 +168,15 @@ class RandomDataSeeder extends Seeder 'contact_key' => \Illuminate\Support\Str::random(40), ]); - factory(\App\Models\Client::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company) { - factory(\App\Models\ClientContact::class, 1)->create([ + Client::factory()->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company) { + ClientContact::factory()->create([ 'user_id' => $user->id, 'client_id' => $c->id, 'company_id' => $company->id, 'is_primary' => 1, ]); - factory(\App\Models\ClientContact::class, 5)->create([ + ClientContact::factory()->count(5)->create([ 'user_id' => $user->id, 'client_id' => $c->id, 'company_id' => $company->id, @@ -171,10 +184,10 @@ class RandomDataSeeder extends Seeder }); /* Product Factory */ - factory(\App\Models\Product::class, 2)->create(['user_id' => $user->id, 'company_id' => $company->id]); + Product::factory()->count(2)->create(['user_id' => $user->id, 'company_id' => $company->id]); /* Invoice Factory */ - factory(\App\Models\Invoice::class, 2)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]); + Invoice::factory()->count(2)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]); $invoices = Invoice::all(); $invoice_repo = new InvoiceRepository(); @@ -228,7 +241,7 @@ class RandomDataSeeder extends Seeder }); /*Credits*/ - factory(\App\Models\Credit::class, 2)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]); + Credit::factory()->count(2)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]); $credits = Credit::cursor(); $credit_repo = new CreditRepository(); @@ -253,12 +266,10 @@ class RandomDataSeeder extends Seeder }); /* Recurring Invoice Factory */ - factory(\App\Models\RecurringInvoice::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]); - - // factory(\App\Models\Payment::class,20)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id, 'settings' => ClientSettings::buildClientSettings($company->settings, $client->settings)]); + RecurringInvoice::factory()->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]); /*Credits*/ - factory(\App\Models\Quote::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]); + Quote::factory()->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]); $quotes = Quote::cursor(); $quote_repo = new QuoteRepository(); diff --git a/database/seeds/UsersTableSeeder.php b/database/seeders/UsersTableSeeder.php similarity index 75% rename from database/seeds/UsersTableSeeder.php rename to database/seeders/UsersTableSeeder.php index b50278132e6c..9596cb609b41 100644 --- a/database/seeds/UsersTableSeeder.php +++ b/database/seeders/UsersTableSeeder.php @@ -1,4 +1,15 @@ command->info('Running UsersTableSeeder'); - Eloquent::unguard(); + Model::unguard(); $faker = \Faker\Factory::create(); - $account = factory(\App\Models\Account::class)->create(); - $company = factory(\App\Models\Company::class)->create([ + $account = Account::factory()->create(); + $company = Company::factory()->create([ 'account_id' => $account->id, 'domain' => 'ninja.test', ]); @@ -35,7 +47,7 @@ class UsersTableSeeder extends Seeder $account->default_company_id = $company->id; $account->save(); - $user = factory(\App\Models\User::class)->create([ + $user = User::factory()->create([ 'account_id' => $account->id, 'confirmation_code' => $this->createDbHash(config('database.default')), ]); @@ -59,7 +71,7 @@ class UsersTableSeeder extends Seeder 'is_locked' => 0, ]); - $client = factory(\App\Models\Client::class)->create([ + $client = Client::factory()->create([ 'user_id' => $user->id, 'company_id' => $company->id, ]); @@ -74,15 +86,15 @@ class UsersTableSeeder extends Seeder 'client_id' =>$client->id, ]); - factory(\App\Models\Client::class, 20)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company) { - factory(\App\Models\ClientContact::class, 1)->create([ + Client::factory()->count(20)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company) { + ClientContact::factory()->create([ 'user_id' => $user->id, 'client_id' => $c->id, 'company_id' => $company->id, 'is_primary' => 1, ]); - factory(\App\Models\ClientContact::class, 10)->create([ + ClientContact::factory()->count(10)->create([ 'user_id' => $user->id, 'client_id' => $c->id, 'company_id' => $company->id, diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php deleted file mode 100644 index 7786a4997dd8..000000000000 --- a/database/seeds/DatabaseSeeder.php +++ /dev/null @@ -1,38 +0,0 @@ -command->info('Running DatabaseSeeder'); - - if (Timezone::count()) { - $this->command->info('Skipping: already run'); - - return; - } - - Eloquent::unguard(); - - $this->call('ConstantsSeeder'); - $this->call('PaymentLibrariesSeeder'); - $this->call('BanksSeeder'); - $this->call('CurrenciesSeeder'); - $this->call('LanguageSeeder'); - $this->call('CountriesSeeder'); - $this->call('IndustrySeeder'); - //$this->call('PaymentTermsSeeder'); - $this->call('PaymentTypesSeeder'); - $this->call('GatewayTypesSeeder'); - $this->call('DateFormatsSeeder'); - $this->call('DesignSeeder'); - } -} diff --git a/phpunit.xml b/phpunit.xml index f1f54561c8b9..30a152af0175 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,69 +1,58 @@ - - - - ./tests/Unit - - - - ./tests/Integration - - - - ./tests/Feature - - - - ./tests/Pdf - - - - - ./app - - ./vendor - ./app/Providers - ./app/Http - ./app/Models - ./app/Transformers - ./app/Events - ./app/Observers - ./app/Policies - ./app/Jobs - ./app/Factory - ./app/Helpers - ./app/Libraries - ./app/Listeners - ./app/Mail - ./app/Notifications - ./app/Providers - ./app/Repositories - ./app/Filters - ./app/Console/Kernel.php - ./app/Constants.php - ./app/Libraries/OFX.php - ./app/Exceptions/Handler.php - - - - - - - - - - - - - - - + + + + ./app + + + ./vendor + ./app/Providers + ./app/Http + ./app/Models + ./app/Transformers + ./app/Events + ./app/Observers + ./app/Policies + ./app/Jobs + ./app/Factory + ./app/Helpers + ./app/Libraries + ./app/Listeners + ./app/Mail + ./app/Notifications + ./app/Providers + ./app/Repositories + ./app/Filters + ./app/Console/Kernel.php + ./app/Constants.php + ./app/Libraries/OFX.php + ./app/Exceptions/Handler.php + + + + + + + + ./tests/Unit + + + ./tests/Integration + + + ./tests/Feature + + + ./tests/Pdf + + + + + + + + + + + diff --git a/tests/Feature/ClientTest.php b/tests/Feature/ClientTest.php index 4a48d8ad5da4..d7496d1d9fcf 100644 --- a/tests/Feature/ClientTest.php +++ b/tests/Feature/ClientTest.php @@ -134,15 +134,15 @@ class ClientTest extends TestCase */ public function testClientRestEndPoints() { - factory(\App\Models\Client::class, 3)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id])->each(function ($c) { - factory(\App\Models\ClientContact::class, 1)->create([ + Client::factory()->count(3)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id])->each(function ($c) { + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $c->id, 'company_id' => $this->company->id, 'is_primary' => 1, ]); - factory(\App\Models\ClientContact::class, 2)->create([ + ClientContact::factory()->count(2)->create([ 'user_id' => $this->user->id, 'client_id' => $c->id, 'company_id' => $this->company->id, @@ -204,15 +204,15 @@ class ClientTest extends TestCase public function testDefaultTimeZoneFromClientModel() { - $account = factory(\App\Models\Account::class)->create(); - $company = factory(\App\Models\Company::class)->create([ + $account = Account::factory()->create(); + $company = Company::factory()->create([ 'account_id' => $account->id, ]); $account->default_company_id = $company->id; $account->save(); - $user = factory(\App\Models\User::class)->create([ + $user = User::factory()->create([ 'account_id' => $account->id, 'confirmation_code' => $this->createDbHash(config('database.default')), 'email' => 'whiz@gmail.com', @@ -239,15 +239,15 @@ class ClientTest extends TestCase 'is_locked' => 0, ]); - factory(\App\Models\Client::class, 3)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company) { - factory(\App\Models\ClientContact::class, 1)->create([ + Client::factory()->count(3)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company) { + ClientContact::factory()->create([ 'user_id' => $user->id, 'client_id' => $c->id, 'company_id' => $company->id, 'is_primary' => 1, ]); - factory(\App\Models\ClientContact::class, 2)->create([ + ClientContact::factory()->count(2)->create([ 'user_id' => $user->id, 'client_id' => $c->id, 'company_id' => $company->id, @@ -270,15 +270,15 @@ class ClientTest extends TestCase public function testCreatingClientAndContacts() { - $account = factory(\App\Models\Account::class)->create(); - $company = factory(\App\Models\Company::class)->create([ - 'account_id' => $account->id, - ]); + $account = Account::factory()->create(); + $company = Company::factory()->create([ + 'account_id' => $account->id, + ]); $account->default_company_id = $company->id; $account->save(); - $user = factory(\App\Models\User::class)->create([ + $user = User::factory()->create([ 'account_id' => $account->id, 'confirmation_code' => $this->createDbHash(config('database.default')), 'email' => 'whiz@gmail.com', diff --git a/tests/Feature/CreditTest.php b/tests/Feature/CreditTest.php index f763b6ac2f57..ff0a2b6497ce 100644 --- a/tests/Feature/CreditTest.php +++ b/tests/Feature/CreditTest.php @@ -12,6 +12,7 @@ namespace Tests\Feature; use App\Models\Account; use App\Models\Client; +use App\Models\ClientContact; use App\Models\Credit; use App\Utils\Traits\MakesHash; use Illuminate\Database\Eloquent\Model; @@ -41,15 +42,15 @@ class CreditTest extends TestCase public function testCreditsList() { - factory(Client::class, 1)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id])->each(function ($c) { - factory(\App\Models\ClientContact::class, 1)->create([ + Client::factory()->count(3)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id])->each(function ($c) { + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $c->id, 'company_id' => $this->company->id, 'is_primary' => 1, ]); - factory(\App\Models\ClientContact::class, 1)->create([ + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $c->id, 'company_id' => $this->company->id, @@ -58,7 +59,7 @@ class CreditTest extends TestCase $client = Client::all()->first(); - factory(Credit::class, 1)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); + Credit::factory()->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); $response = $this->withHeaders([ 'X-API-SECRET' => config('ninja.api_secret'), diff --git a/tests/Feature/InvitationTest.php b/tests/Feature/InvitationTest.php index 26713aeee6ed..4151de5b7453 100644 --- a/tests/Feature/InvitationTest.php +++ b/tests/Feature/InvitationTest.php @@ -18,6 +18,8 @@ use App\Factory\InvoiceInvitationFactory; use App\Jobs\Account\CreateAccount; use App\Models\Account; use App\Models\Client; +use App\Models\ClientContact; +use App\Models\Company; use App\Models\Invoice; use App\Models\InvoiceInvitation; use App\Models\User; @@ -56,8 +58,8 @@ class InvitationTest extends TestCase public function testInvoiceCreationAfterInvoiceMarkedSent() { - $account = factory(\App\Models\Account::class)->create(); - $company = factory(\App\Models\Company::class)->create([ + $account = Account::factory()->create(); + $company = Company::factory()->create([ 'account_id' => $account->id, ]); @@ -67,7 +69,7 @@ class InvitationTest extends TestCase $user = User::where('email', 'user@example.com')->first(); if (! $user) { - $user = factory(\App\Models\User::class)->create([ + $user = User::factory()->create([ 'account_id' => $account->id, 'confirmation_code' => $this->createDbHash(config('database.default')), ]); @@ -94,15 +96,15 @@ class InvitationTest extends TestCase 'is_locked' => 0, ]); - factory(\App\Models\Client::class)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company) { - factory(\App\Models\ClientContact::class, 1)->create([ + Client::factory()->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company) { + ClientContact::factory()->create([ 'user_id' => $user->id, 'client_id' => $c->id, 'company_id' => $company->id, 'is_primary' => 1, ]); - factory(\App\Models\ClientContact::class, 2)->create([ + ClientContact::factory()->count(2)->create([ 'user_id' => $user->id, 'client_id' => $c->id, 'company_id' => $company->id, @@ -111,7 +113,7 @@ class InvitationTest extends TestCase $client = Client::whereUserId($user->id)->whereCompanyId($company->id)->first(); - factory(\App\Models\Invoice::class, 5)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]); + Invoice::factory()->count(5)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]); $invoice = Invoice::whereUserId($user->id)->whereCompanyId($company->id)->whereClientId($client->id)->first(); diff --git a/tests/Feature/InvoiceTest.php b/tests/Feature/InvoiceTest.php index 1961a463699c..bb620767f769 100644 --- a/tests/Feature/InvoiceTest.php +++ b/tests/Feature/InvoiceTest.php @@ -15,6 +15,7 @@ use App\DataMapper\CompanySettings; use App\Factory\InvoiceFactory; use App\Models\Account; use App\Models\Client; +use App\Models\ClientContact; use App\Models\Invoice; use App\Utils\Traits\MakesHash; use Illuminate\Database\Eloquent\Model; @@ -51,15 +52,15 @@ class InvoiceTest extends TestCase public function testInvoiceList() { - factory(\App\Models\Client::class, 1)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id])->each(function ($c) { - factory(\App\Models\ClientContact::class, 1)->create([ + Client::factory()->create(['user_id' => $this->user->id, 'company_id' => $this->company->id])->each(function ($c) { + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $c->id, 'company_id' => $this->company->id, 'is_primary' => 1, ]); - factory(\App\Models\ClientContact::class, 1)->create([ + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $c->id, 'company_id' => $this->company->id, @@ -68,7 +69,7 @@ class InvoiceTest extends TestCase $client = Client::all()->first(); - factory(\App\Models\Invoice::class, 1)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); + Invoice::factory()->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); $response = $this->withHeaders([ 'X-API-SECRET' => config('ninja.api_secret'), @@ -153,7 +154,7 @@ class InvoiceTest extends TestCase public function testUniqueNumberValidation() { /* stub a invoice in the DB that we will use to test against later */ - $invoice = factory(\App\Models\Invoice::class)->create([ + $invoice = Invoice::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $this->client->id, 'company_id' => $this->company->id, diff --git a/tests/Feature/LoginTest.php b/tests/Feature/LoginTest.php index eaef3032df81..0bd80007d02b 100644 --- a/tests/Feature/LoginTest.php +++ b/tests/Feature/LoginTest.php @@ -13,6 +13,7 @@ namespace Tests\Feature; use App\DataMapper\CompanySettings; use App\Models\Account; use App\Models\Client; +use App\Models\Company; use App\Models\CompanyToken; use App\Models\User; use App\Utils\Traits\UserSessionAttributes; @@ -58,7 +59,7 @@ class LoginTest extends TestCase // $user = factory(User::class)->create([ // // 'account_id' => $account->id, // ]); - // $company = factory(\App\Models\Company::class)->make([ + // $company = Company::factory()->make([ // 'account_id' => $account->id, // ]); @@ -90,7 +91,7 @@ class LoginTest extends TestCase // $user = factory(User::class)->create([ // // 'account_id' => $account->id, // ]); - // $company = factory(\App\Models\Company::class)->make([ + // $company = Company::factory()->make([ // 'account_id' => $account->id, // ]); @@ -120,7 +121,7 @@ class LoginTest extends TestCase // $user = factory(User::class)->create([ // // 'account_id' => $account->id, // ]); - // $company = factory(\App\Models\Company::class)->make([ + // $company = Company::factory()->make([ // 'account_id' => $account->id, // ]); @@ -140,14 +141,14 @@ class LoginTest extends TestCase public function testApiLogin() { - $account = factory(Account::class)->create(); - $user = factory(User::class)->create([ + $account = Account::factory()->create(); + $user = User::factory()->create([ 'account_id' => $account->id, 'email' => 'test@example.com', 'password' => \Hash::make('123456'), ]); - $company = factory(\App\Models\Company::class)->create([ + $company = Company::factory()->create([ 'account_id' => $account->id, ]); diff --git a/tests/Feature/PaymentTest.php b/tests/Feature/PaymentTest.php index 22f3401f7579..48419f546de9 100644 --- a/tests/Feature/PaymentTest.php +++ b/tests/Feature/PaymentTest.php @@ -20,6 +20,7 @@ use App\Helpers\Invoice\InvoiceSum; use App\Models\Account; use App\Models\Activity; use App\Models\Client; +use App\Models\ClientContact; use App\Models\Credit; use App\Models\Invoice; use App\Models\Payment; @@ -67,15 +68,15 @@ class PaymentTest extends TestCase public function testPaymentList() { - factory(\App\Models\Client::class, 1)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id])->each(function ($c) { - factory(\App\Models\ClientContact::class, 1)->create([ + Client::factory()->create(['user_id' => $this->user->id, 'company_id' => $this->company->id])->each(function ($c) { + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $c->id, 'company_id' => $this->company->id, 'is_primary' => 1, ]); - factory(\App\Models\ClientContact::class, 1)->create([ + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $c->id, 'company_id' => $this->company->id, @@ -84,7 +85,7 @@ class PaymentTest extends TestCase $client = Client::all()->first(); - factory(\App\Models\Payment::class, 1)->create( + Payment::factory()->create( ['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $client->id] ); @@ -98,7 +99,7 @@ class PaymentTest extends TestCase public function testPaymentRESTEndPoints() { - factory(\App\Models\Payment::class, 1)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); + Payment::factory()->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); $Payment = Payment::all()->last(); @@ -271,7 +272,7 @@ class PaymentTest extends TestCase $client = ClientFactory::create($this->company->id, $this->user->id); $client->save(); - factory(\App\Models\ClientContact::class)->create([ + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $client->id, 'company_id' =>$this->company->id, @@ -347,7 +348,7 @@ class PaymentTest extends TestCase $client->setRelation('company', $this->company); $client->save(); - $client_contact = factory(\App\Models\ClientContact::class, 1)->create([ + $client_contact = ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $client->id, 'company_id' => $this->company->id, @@ -423,7 +424,7 @@ class PaymentTest extends TestCase $client = ClientFactory::create($this->company->id, $this->user->id); $client->save(); - factory(\App\Models\ClientContact::class, 1)->create([ + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $client->id, 'company_id' => $this->company->id, @@ -431,7 +432,7 @@ class PaymentTest extends TestCase 'send_email' => true, ]); - factory(\App\Models\ClientContact::class, 1)->create([ + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $client->id, 'company_id' => $this->company->id, @@ -495,7 +496,7 @@ class PaymentTest extends TestCase $client = ClientFactory::create($this->company->id, $this->user->id); $client->save(); - $contact = factory(\App\Models\ClientContact::class, 1)->create([ +$contact = ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $this->client->id, 'company_id' => $this->company->id, @@ -503,7 +504,7 @@ class PaymentTest extends TestCase 'send_email' => true, ]); - factory(\App\Models\ClientContact::class, 1)->create([ + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $this->client->id, 'company_id' => $this->company->id, diff --git a/tests/Feature/RecurringInvoiceTest.php b/tests/Feature/RecurringInvoiceTest.php index baa1e5d687e4..ed04d5e968df 100644 --- a/tests/Feature/RecurringInvoiceTest.php +++ b/tests/Feature/RecurringInvoiceTest.php @@ -14,6 +14,7 @@ use App\DataMapper\ClientSettings; use App\DataMapper\CompanySettings; use App\Models\Account; use App\Models\Client; +use App\Models\ClientContact; use App\Models\RecurringInvoice; use App\Utils\Traits\MakesHash; use Illuminate\Database\Eloquent\Model; @@ -55,15 +56,16 @@ class RecurringInvoiceTest extends TestCase public function testRecurringInvoiceList() { - factory(\App\Models\Client::class, 1)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id])->each(function ($c) { - factory(\App\Models\ClientContact::class, 1)->create([ + Client::factory()->create(['user_id' => $this->user->id, 'company_id' => $this->company->id])->each(function ($c) { + + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $c->id, 'company_id' => $this->company->id, 'is_primary' => 1, ]); - factory(\App\Models\ClientContact::class, 1)->create([ + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $c->id, 'company_id' => $this->company->id, @@ -72,7 +74,7 @@ class RecurringInvoiceTest extends TestCase $client = Client::all()->first(); - factory(\App\Models\RecurringInvoice::class, 1)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); + RecurringInvoice::factory()->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); $response = $this->withHeaders([ 'X-API-SECRET' => config('ninja.api_secret'), @@ -84,15 +86,16 @@ class RecurringInvoiceTest extends TestCase public function testRecurringInvoiceRESTEndPoints() { - factory(\App\Models\Client::class, 1)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id])->each(function ($c) { - factory(\App\Models\ClientContact::class, 1)->create([ + Client::factory()->create(['user_id' => $this->user->id, 'company_id' => $this->company->id])->each(function ($c) { + + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $c->id, 'company_id' => $this->company->id, 'is_primary' => 1, ]); - factory(\App\Models\ClientContact::class, 1)->create([ + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $c->id, 'company_id' => $this->company->id, @@ -100,7 +103,7 @@ class RecurringInvoiceTest extends TestCase }); $client = Client::all()->first(); - factory(\App\Models\RecurringInvoice::class, 1)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); + RecurringInvoice::factory()->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); $RecurringInvoice = RecurringInvoice::where('user_id', $this->user->id)->first(); $RecurringInvoice->save(); diff --git a/tests/Feature/RecurringQuoteTest.php b/tests/Feature/RecurringQuoteTest.php index 2bad66392b40..36b4d1ceec7a 100644 --- a/tests/Feature/RecurringQuoteTest.php +++ b/tests/Feature/RecurringQuoteTest.php @@ -55,7 +55,7 @@ class RecurringQuoteTest extends TestCase public function testRecurringQuoteList() { - factory(\App\Models\RecurringQuote::class, 1)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); + RecurringQuote::factory()->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); $response = $this->withHeaders([ 'X-API-SECRET' => config('ninja.api_secret'), @@ -67,7 +67,7 @@ class RecurringQuoteTest extends TestCase public function testRecurringQuoteRESTEndPoints() { - factory(\App\Models\RecurringQuote::class, 1)->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); + RecurringQuote::factory()->create(['user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_id' => $this->client->id]); $RecurringQuote = RecurringQuote::where('user_id', $this->user->id)->first(); $RecurringQuote->save(); diff --git a/tests/Feature/Shop/ShopInvoiceTest.php b/tests/Feature/Shop/ShopInvoiceTest.php index 92244ba09c3d..75a388bdd188 100644 --- a/tests/Feature/Shop/ShopInvoiceTest.php +++ b/tests/Feature/Shop/ShopInvoiceTest.php @@ -12,6 +12,7 @@ namespace Tests\Feature\Shop; use App\Factory\CompanyUserFactory; use App\Models\CompanyToken; +use App\Models\Product; use App\Utils\Traits\MakesHash; use Illuminate\Database\Eloquent\Model; use Illuminate\Routing\Middleware\ThrottleRequests; @@ -98,7 +99,7 @@ class ShopInvoiceTest extends TestCase $this->company->enable_shop_api = true; $this->company->save(); - $product = factory(\App\Models\Product::class)->create([ + $product = Product::factory()->create([ 'user_id' => $this->user->id, 'company_id' => $this->company->id, ]); diff --git a/tests/Feature/UserTest.php b/tests/Feature/UserTest.php index b1b30570bf74..ff3e97d6c8ea 100644 --- a/tests/Feature/UserTest.php +++ b/tests/Feature/UserTest.php @@ -138,7 +138,7 @@ class UserTest extends TestCase $this->withoutMiddleware(PasswordProtection::class); /* Create New Company */ - $company2 = factory(\App\Models\Company::class)->create([ + $company2 = Company::factory()->create([ 'account_id' => $this->account->id, ]); diff --git a/tests/Integration/CompanyLedgerTest.php b/tests/Integration/CompanyLedgerTest.php index 9f442cfbb285..0f438b5c8c57 100644 --- a/tests/Integration/CompanyLedgerTest.php +++ b/tests/Integration/CompanyLedgerTest.php @@ -19,6 +19,8 @@ use App\Factory\InvoiceItemFactory; use App\Jobs\Invoice\MarkInvoicePaid; use App\Models\Account; use App\Models\Activity; +use App\Models\Client; +use App\Models\ClientContact; use App\Models\Company; use App\Models\CompanyLedger; use App\Models\CompanyToken; @@ -79,8 +81,8 @@ class CompanyLedgerTest extends TestCase } } - $this->account = factory(\App\Models\Account::class)->create(); - $this->company = factory(\App\Models\Company::class)->create([ + $this->account = Account::factory()->create(); + $this->company = Company::factory()->create([ 'account_id' => $this->account->id, ]); @@ -108,7 +110,7 @@ class CompanyLedgerTest extends TestCase $this->user = User::whereEmail('user@example.com')->first(); if (! $this->user) { - $this->user = factory(\App\Models\User::class)->create([ + $this->user = User::factory()->create([ 'account_id' => $this->account->id, 'password' => Hash::make('ALongAndBriliantPassword'), 'confirmation_code' => $this->createDbHash(config('database.default')), @@ -130,12 +132,12 @@ class CompanyLedgerTest extends TestCase $company_token->token = $this->token; $company_token->save(); - $this->client = factory(\App\Models\Client::class)->create([ + $this->client = Client::factory()->create([ 'user_id' => $this->user->id, 'company_id' => $this->company->id, ]); - factory(\App\Models\ClientContact::class, 1)->create([ + ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $this->client->id, 'company_id' => $this->company->id, diff --git a/tests/Integration/MultiDBUserTest.php b/tests/Integration/MultiDBUserTest.php index 73e8d003a6f7..0b804eeea372 100644 --- a/tests/Integration/MultiDBUserTest.php +++ b/tests/Integration/MultiDBUserTest.php @@ -40,18 +40,18 @@ class MultiDBUserTest extends TestCase User::unguard(); - $ac = factory(\App\Models\Account::class)->make(); + $ac = Account::factory()->make(); $ac->setHidden(['hashed_id']); $account = Account::on('db-ninja-01')->create($ac->toArray()); $account2 = Account::on('db-ninja-02')->create($ac->toArray()); - $company = factory(\App\Models\Company::class)->make([ + $company = Company::factory()->make([ 'account_id' => $account->id, ]); - $company2 = factory(\App\Models\Company::class)->make([ + $company2 = Company::factory()->make([ 'account_id' => $account2->id, ]); diff --git a/tests/Integration/UniqueEmailTest.php b/tests/Integration/UniqueEmailTest.php index 4da343184f4d..650fe58f2f2e 100644 --- a/tests/Integration/UniqueEmailTest.php +++ b/tests/Integration/UniqueEmailTest.php @@ -42,12 +42,12 @@ class UniqueEmailTest extends TestCase $this->rule = new NewUniqueUserRule(); - $ac = factory(\App\Models\Account::class)->make(); + $ac = Account::factory()->make(); $ac->setHidden(['hashed_id']); $account = Account::on('db-ninja-01')->create($ac->toArray()); - $company = factory(\App\Models\Company::class)->make([ + $company = Company::factory()->make([ 'account_id' => $account->id, ]); @@ -55,11 +55,11 @@ class UniqueEmailTest extends TestCase Company::on('db-ninja-01')->create($company->toArray()); - $ac2 = factory(\App\Models\Account::class)->make(); + $ac2 = Account::factory()->make(); $ac2->setHidden(['hashed_id']); $account2 = Account::on('db-ninja-02')->create($ac2->toArray()); - $company2 = factory(\App\Models\Company::class)->make([ + $company2 = Company::factory()->make([ 'account_id' => $account2->id, ]); diff --git a/tests/MockAccountData.php b/tests/MockAccountData.php index a7d99c0266ac..36dcf0e9fd30 100644 --- a/tests/MockAccountData.php +++ b/tests/MockAccountData.php @@ -24,17 +24,23 @@ use App\Factory\InvoiceInvitationFactory; use App\Factory\InvoiceItemFactory; use App\Factory\InvoiceToRecurringInvoiceFactory; use App\Helpers\Invoice\InvoiceSum; +use App\Models\Account; use App\Models\Client; use App\Models\ClientContact; +use App\Models\Company; use App\Models\CompanyGateway; use App\Models\CompanyToken; use App\Models\Credit; +use App\Models\Expense; use App\Models\GroupSetting; use App\Models\Invoice; use App\Models\InvoiceInvitation; use App\Models\Quote; +use App\Models\QuoteInvitation; use App\Models\RecurringInvoice; use App\Models\User; +use App\Models\Vendor; +use App\Models\VendorContact; use App\Utils\Traits\CompanyGatewayFeesAndLimitsSaver; use App\Utils\Traits\GeneratesCounter; use App\Utils\Traits\MakesHash; @@ -96,10 +102,11 @@ trait MockAccountData } } - $this->account = factory(\App\Models\Account::class)->create(); - $this->company = factory(\App\Models\Company::class)->create([ - 'account_id' => $this->account->id, - ]); + + $this->account = Account::factory()->create(); + $this->company = Company::factory()->create([ + 'account_id' => $this->account->id, + ]); $settings = CompanySettings::defaults(); @@ -125,10 +132,11 @@ trait MockAccountData $this->user = User::whereEmail('user@example.com')->first(); if (! $this->user) { - $this->user = factory(\App\Models\User::class)->create([ - 'account_id' => $this->account->id, - 'confirmation_code' => $this->createDbHash(config('database.default')), - ]); + + $this->user = User::factory()->create([ + 'account_id' => $this->account->id, + 'confirmation_code' => $this->createDbHash(config('database.default')), + ]); } $this->user->password = Hash::make('ALongAndBriliantPassword'); @@ -150,12 +158,12 @@ trait MockAccountData $company_token->save(); - $this->client = factory(\App\Models\Client::class)->create([ + $this->client = Client::factory()->create([ 'user_id' => $this->user->id, 'company_id' => $this->company->id, ]); - $contact = factory(\App\Models\ClientContact::class)->create([ + $contact = ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $this->client->id, 'company_id' => $this->company->id, @@ -163,19 +171,21 @@ trait MockAccountData 'send_email' => true, ]); - $contact2 = factory(\App\Models\ClientContact::class)->create([ + + $contact2 = ClientContact::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $this->client->id, 'company_id' => $this->company->id, 'send_email' => true, ]); - $this->vendor = factory(\App\Models\Vendor::class)->create([ + $this->vendor = Vendor::factory()->create([ 'user_id' => $this->user->id, 'company_id' => $this->company->id, ]); - $vendor_contact = factory(\App\Models\VendorContact::class)->create([ + + $vendor_contact = VendorContact::factory()->create([ 'user_id' => $this->user->id, 'vendor_id' => $this->vendor->id, 'company_id' => $this->company->id, @@ -183,22 +193,20 @@ trait MockAccountData 'send_email' => true, ]); - $vendor_contact2 = factory(\App\Models\VendorContact::class)->create([ + $vendor_contact2 = VendorContact::factory()->create([ 'user_id' => $this->user->id, 'vendor_id' => $this->vendor->id, 'company_id' => $this->company->id, 'send_email' => true, ]); - $this->expense = factory(\App\Models\Expense::class)->create([ + + + $this->expense = Expense::factory()->create([ 'user_id' => $this->user->id, 'company_id' => $this->company->id, ]); - // $rels = collect($contact, $contact2); - // $this->client->setRelation('contacts', $rels); - // $this->client->save(); - $gs = new GroupSetting; $gs->name = 'Test'; $gs->company_id = $this->client->company_id; @@ -215,7 +223,7 @@ trait MockAccountData $this->invoice = InvoiceFactory::create($this->company->id, $this->user->id); //stub the company and user_id $this->invoice->client_id = $this->client->id; - // $this->invoice = factory(\App\Models\Invoice::class)->create([ + // $this->invoice = Invoice::factory()->create([ // 'user_id' => $this->user->id, // 'client_id' => $this->client->id, // 'company_id' => $this->company->id, @@ -238,15 +246,14 @@ trait MockAccountData //$this->invoice->service()->createInvitations()->markSent(); //$this->invoice->service()->createInvitations(); - - factory(\App\Models\InvoiceInvitation::class)->create([ + InvoiceInvitation::factory()->create([ 'user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_contact_id' => $contact->id, 'invoice_id' => $this->invoice->id, ]); - factory(\App\Models\InvoiceInvitation::class)->create([ + InvoiceInvitation::factory()->create([ 'user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_contact_id' => $contact2->id, @@ -255,7 +262,7 @@ trait MockAccountData $this->invoice->service()->markSent(); - $this->quote = factory(\App\Models\Quote::class)->create([ + $this->quote = Quote::factory()->create([ 'user_id' => $this->user->id, 'client_id' => $this->client->id, 'company_id' => $this->company->id, @@ -276,14 +283,14 @@ trait MockAccountData //$this->quote->service()->createInvitations()->markSent(); - factory(\App\Models\QuoteInvitation::class)->create([ + QuoteInvitation::factory()->create([ 'user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_contact_id' => $contact->id, 'quote_id' => $this->quote->id, ]); - factory(\App\Models\QuoteInvitation::class)->create([ + QuoteInvitation::factory()->create([ 'user_id' => $this->user->id, 'company_id' => $this->company->id, 'client_contact_id' => $contact2->id,