Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[9.x] Add ability to generate unique validation rules per nested array element #40464

Closed
wants to merge 26 commits into from
Closed

Conversation

stevebauman
Copy link
Contributor

@stevebauman stevebauman commented Jan 17, 2022

Description

This PR introduces the ability to generate unique validation rules per nested array element, granting you direct access to each value supplied the request, the attribute name, and the whole data set in case other attribute values are needed.

This will be done using a new Rule static method: Rule::nested($callback).

Purpose

Generation of unique validation rules in nested arrays is currently pretty difficult, especially if you use any sort of custom validation rules. There is no built in way to generate validation rules taking into account the current iteration's value, and you'll have to set the indexes and such manually inside of a $rules array prior to sending it to the validator.

This also becomes quite problematic because we need to trust the data structure that was sent to us in the request and then iterate over it to dynamically generate our rules prior to actual validation taking place.

Example

Before:

$rules = [
    'companies.*.id' => [Rule::exists(Company::class, 'id')],
];

foreach ($request->companies as $index => $company) {
    $rules["companies.{$index}.id"] = [new HasPermission('manage-company', $company['id'])];
}

Validator::validate($request->all(), $rules);

After:

$rules = [
    'companies.*.id' => Rule::nested(function ($attribute, $value) {
        return [
            Rule::exists(Company::class, 'id'),
            new HasPermission('manage-company', $value)
        ];
    }),
];

Validator::validate($request->all(), $rules);

Another example where this is extremely handy is the validation of complex nested relationships:

$rules = [
    'companies.*.id' => Rule::nested(function ($attribute, $value) {
        return [
            Rule::exists(Company::class, 'id'),
            new HasPermission('manage-company', $value)
        ];
    })
    'companies.*.locations.*.id' => Rule::nested(function ($attribute, $value, $data) {
        // $attribute = 'companies.0.locations.0.id'
        $company = Str::before($attribute, '.locations');

        return Rule::exists(Locations::class, 'id')->where('company_id', $data["$company.id"]);
    }),
];

You may also supply an array of rules as you would normally with nested instances, as well as supply multiple nested instances:

$rules = [
    'companies.*.id' => [
        Rule::exists(Company::class, 'id'),
        Rule::nested(function ($attribute, $value) {
            return [new HasPermission('manage-company', $value)];
        }),
        Rule::nested(function ($attribute, $value) {
            // ...
        }),
    ],
];

Validation of arrays is super tricky stuff. I think this greatly simplifies the developer experience, allowing us not to think too much about its complexities.


Please let me know if you have any questions/comments/concerns. Thanks so much for your time! ❤️

@georgebohnisch
Copy link

Nice work, this is going to make validation in my project much simpler.

* @return array
*/
protected function explodeExplicitRule($rule)
protected function explodeExplicitRule($rule, $attribute)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing the method signatures here could be a breaking change.

* @return mixed
*/
protected function prepareRule($rule)
protected function prepareRule($rule, $attribute)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could also be a breaking change.

@ionutantohi
Copy link

This might be a nice addition.

A bit offtopic, but the same issue exists with the validator messages. You still need to loop through your array, and set the correct error message. Would be nice if both can be supported.

This is my current approach now. Without this, the validator will output something like The companies.0.name field is required and we can't present that to the user.

$rules = [];
$messages = [];

foreach ($request->input('companies', []) as $index => $company) {
    $rules = array_merge($rules, [
        "companies.{$index}.name" => ['required'],
    ]);

    $messages = array_merge($messages, [
        "companies.{$index}.name.required" => 'Company ' . ($index + 1) . ': The name field is required.',
    ]);
}

$validator = Validator::make($request->all(), $rules, $messages);

@siarheipashkevich
Copy link
Contributor

@stevebauman thank you for the great PR. But what about attributes for this rule?

How we should declare attributes for the nested arrays?

@siarheipashkevich
Copy link
Contributor

siarheipashkevich commented Jan 18, 2022

Could anybody explain how I can use it with distinct rule?

I need check that the each item does not have duplicated discounts.

For the example below items.0.discounts.* - not valid

$data = [
    'items' => [
        [
            'id' => 1,
            'discounts' => [
                ['id' => 1, 'discount' => 10], // duplicate
                ['id' => 1, 'discount' => 10], // duplicate
                ['id' => 2, 'discount' => 20],
            ],
        ],
         [
            'id' => 2,
            'discounts' => [
                ['id' => 1, 'discount' => 10],
                ['id' => 2, 'discount' => 10],
            ],
        ],
    ],
];

$rules = [];

foreach ($request->get('items', []) as $index) {
    $rules["items.{$index}.discounts.*.id"] => ['distinct'];
}

Validator::make($request->all(), $rules);

{
if ($rule instanceof Closure) {
$rule = new ClosureValidationRule($rule);
} elseif ($rule instanceof NestedRules) {
$rule = $rule->compile($attribute, $this->data[$attribute] ?? null);
Copy link
Contributor

@siarheipashkevich siarheipashkevich Jan 18, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$this->data is poor array

$this->data[$attribute] is it valid if the attribute will have complex key like data.test ?

Copy link
Contributor Author

@stevebauman stevebauman Jan 18, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any data that is set with the attribute's key will be supplied into the Rule::nested() callback.

So if it's an array, it will be an array. This line you mention allows you to place a nested instance on any validation field:

$rules = [
    'name' => Rule::nested(function ($attribute, $value) {
        // (string) "name"
        var_dump($attribute);
        
        // (string) "Taylor Otwell"
        var_dump($value);
    }),

    'data.test' => Rule::nested(function ($attribute, $value) {
        // (string) "data.test"
        var_dump($attribute);
        
        // (string) "Foo"
        var_dump($value);
    }),
];

Validator::validate([
    'name' => 'Taylor Otwell',
    'data' => ['test' => 'Foo'],
], $rules);

The third argument inside of the Rule::nested() callback is only available when the attribute under validation is a wildcard array.

Co-authored-by: Dries Vints <dries@vints.io>
@amaelftah
Copy link
Contributor

i liked this idea nice work steve 💪

@siarheipashkevich
Copy link
Contributor

Could anybody explain how I can use it with distinct rule?

I need check that the each item does not have duplicated discounts.

For the example below items.0.discounts.* - not valid

$data = [
    'items' => [
        [
            'id' => 1,
            'discounts' => [
                ['id' => 1, 'discount' => 10], // duplicate
                ['id' => 1, 'discount' => 10], // duplicate
                ['id' => 2, 'discount' => 20],
            ],
        ],
         [
            'id' => 2,
            'discounts' => [
                ['id' => 1, 'discount' => 10],
                ['id' => 2, 'discount' => 10],
            ],
        ],
    ],
];

$rules = [];

foreach ($request->get('items', []) as $index) {
    $rules["items.{$index}.discounts.*.id"] => ['distinct'];
}

Validator::make($request->all(), $rules);

@stevebauman will it covered and how?

@stevebauman
Copy link
Contributor Author

stevebauman commented Jan 18, 2022

@ionutantohi

Yea that's true. I'm not sure we can get around this unless we implement some sort of unified system where rules, messages, and attributes can handle a closure/nested instance...

@siarheipashkevich

Currently for your posted example nested() won't help you, because we can't alter the rule array dynamically. Maybe we could have something like this API?

$rules = [
    'items.*' => Rule::nested(function ($attribute) {
        $index = Str::afterLast($attribute, '.');

        return ["{$index}.discounts.*.id" => 'distinct'];
    }),
];

// After rule parsing:
// [
//     'items.0.discounts.*.id' => ['distinct'],
//     'items.1.discounts.*.id' => ['distinct'],
// ]

The above is not supported in this PR, but I think supporting this use-case would grant us even finer control over array validation rules.

@siarheipashkevich
Copy link
Contributor

siarheipashkevich commented Jan 18, 2022

@ionutantohi

Yea that's true. I'm not sure we can get around this unless we implement some sort of unified system where rules, messages, and attributes can handle a closure/nested instance...

@siarheipashkevich

Currently for your posted example nested() won't help you, because we can't alter the rule array dynamically. Maybe we could have something like this API?

$rules = [
    'items.*' => Rule::nested(function ($attribute) {
        $index = Str::afterLast($attribute, '.');

        return ["{$index}.discounts.*.id" => 'distinct'];
    }),
];

// After rule parsing:
// [
//     'items.0.discounts.*.id' => ['distinct'],
//     'items.1.discounts.*.id' => ['distinct'],
// ]

The above is not supported in this PR, but I think supporting this use-case would grant us even finer control over array validation rules.

Rule::nested can returns the array where item has key as name of the attribute and value is rules?

$rules = [
    'items.*' => Rule::nested(function ($attribute) {
        $index = Str::afterLast($attribute, '.');

        return ["{$index}.discounts.*.id" => 'distinct'];
    }),
];

Will it converted to?

$rules = [
     'items.0.discounts.*.id' => ['distinct'],
     'items.1.discounts.*.id' => ['distinct'],
];

@stevebauman stevebauman marked this pull request as draft January 18, 2022 16:21
@stevebauman
Copy link
Contributor Author

@siarheipashkevich

Rule::nested can returns the array where item has key as name of the attribute and value is rules?

No, not currently. I'm saying that it may be possible to be able to.

I've converted this PR to a draft while I attempt to make this possible. As @driesvints points out -- this may need to be sent to the 9.x branch due to breaking changes in method signatures.

@bakerkretzmar
Copy link
Contributor

Love this, had to do it manually on a client project recently and it was not pretty 😅

@siarheipashkevich
Copy link
Contributor

Could you please add an example where I have additional columns in discounts array, for example (type: percent, absolute; and discount: numeric value), not one rule for id

@stevebauman
Copy link
Contributor Author

stevebauman commented Jan 18, 2022

Sure thing @siarheipashkevich! I've added another test so you can see this in action: a38ddf7

Here's the example:

$data = [
    'items' => [
        [
            'discounts' => [
                ['id' => 1, 'percent' => 30, 'discount' => 1400],
                ['id' => 1, 'percent' => -1, 'discount' => 12300],
                ['id' => 2, 'percent' => 120, 'discount' => 1200],
            ]
        ],
        [
            'discounts' => [
                ['id' => 1, 'percent' => 30, 'discount' => 'invalid'],
                ['id' => 2, 'percent' => 'invalid', 'discount' => 1250],
                ['id' => 3, 'percent' => 'invalid', 'discount' => 'invalid'],
            ],
        ],
    ],
];

$rules = [
    'items.*' => Rule::nested(function () {
        return [
            'discounts.*.id' => 'distinct',
            'discounts.*' => Rule::nested(function () {
                return [
                    'percent' => 'numeric|min:0|max:100',
                    'discount' => 'numeric',
                ];
            }),
        ];
    }),
];

@siarheipashkevich
Copy link
Contributor

Thanks a lot @stevebauman !

One more question, how you validate discount value by discount type in our nested example above?

If the discount type equals percent then the discount value should be between 0 and 100.

If the discount type is equals absolute then the discount value should be any valid numeric value.

I will be grateful for your example.

@stevebauman
Copy link
Contributor Author

stevebauman commented Jan 18, 2022

No worries @siarheipashkevich! Thanks for the great examples to display 👍

I just tested this, here's how you could write it using Rule::nested():

$data = [
    'items' => [
        [
            'discounts' => [
                ['id' => 1, 'type' => 'percent', 'discount' => 120],
                ['id' => 1, 'type' => 'absolute', 'discount' => 100],
                ['id' => 2, 'type' => 'percent', 'discount' => 50],
            ],
        ],
        [
            'discounts' => [
                ['id' => 2, 'type' => 'percent', 'discount' => 'invalid'],
                ['id' => 3, 'type' => 'absolute', 'discount' => 2000]
            ],
        ],
    ],
];

$rules = [
    'items.*' => Rule::nested(function () {
        return [
            'discounts.*.id' => 'distinct',
            'discounts.*.type' => 'in:percent,absolute',
            'discounts.*' => Rule::nested(function ($attribute, $value) {
                return $value['type'] === 'percent' 
                    ? ['discount' => 'numeric|min:0|max:100']
                    : ['discount' => 'numeric'];
            }),
        ];
    }),
];

@taylorotwell
Copy link
Member

@stevebauman can you target this at the 9.x branch?

@stevebauman
Copy link
Contributor Author

Yup absolutely! Give me 10 minutes 👍

@stevebauman stevebauman changed the base branch from 8.x to 9.x January 18, 2022 20:44
@stevebauman stevebauman changed the title [8.x] Add ability to generate unique validation rules per nested array element [9.x] Add ability to generate unique validation rules per nested array element Jan 18, 2022
@stevebauman
Copy link
Contributor Author

Ok @taylorotwell -- all good to go!

@taylorotwell
Copy link
Member

taylorotwell commented Jan 18, 2022

A bit offtopic, but the same issue exists with the validator messages. You still need to loop through your array, and set the correct error message. Would be nice if both can be supported.

This is my current approach now. Without this, the validator will output something like The companies.0.name field is required and we can't present that to the user.

@ionutantohi personally I would just handle this by putting something in your validation.php language file. It's hard to let any validator just figure out what you want there.

CleanShot 2022-01-18 at 14 55 40@2x

@taylorotwell
Copy link
Member

@stevebauman one thing that came to mind here was this fairly recent contribution: https://laravel.com/docs/8.x/validation#complex-conditional-array-validation

As you can see, it receives the entire array item for the current index. Is that useful at all in this scenario as well?

@stevebauman
Copy link
Contributor Author

@taylorotwell It's certainly useful, but from what I understand I'm not able to segment rules so that distinct looks only in the parent array and not in the whole data array. For example:

$data = [
    'companies' => [
        ['locations' => [['id' => 1], ['id' => 2]]],
        ['locations' => [['id' => 1], ['id' => 2]]],
    ],
];

// Does not work -- sees duplicates across arrays:
$rules = [
    'companies.*.locations.*.id' => ['distinct', 'exists:locations,id'],
];

// Works:
$rules = [
    'companies.*' => Rule::nested(function () {
        return ['locations.*.id' => ['distinct', 'exists:locations,id']];
    }),
];

@stevebauman
Copy link
Contributor Author

My use case in detail: I have a user creation form where a user can belong to multiple companies. Inside each company, they have to be associated to at least one location owned by that company. I could perform this pretty complex validation like so:

$data = [
    'companies' => [
        ['id' => 1, 'locations' => [['id' => 1], ['id' => 2]]],
        ['id' => 2, 'locations' => [['id' => 1], ['id' => 2]]],
    ],
];

$rules = [
    'companies' => ['required', 'array'],
    'companies.*.id' => ['required', 'distinct', Rule::exists(Company::class, 'id')],
    'companies.*' => Rule::nested(function ($attribute, $company) {
        return [
            'locations' => 'required',
            'locations.*' => ['required', 'array'],
            'locations.*.id' => [
                'required',
                'distinct',
                Rule::exists(Location::class, 'id')->where('company_id', $company['id']),
            ]
        ];
    }),
];

Maybe we could utilize Fluent for the callback arguments as well to follow suite with the complex conditional validation you've shared above? What are your thoughts?

@ionutantohi
Copy link

@ionutantohi personally I would just handle this by putting something in your validation.php language file. It's hard to let any validator just figure out what you want there.

CleanShot 2022-01-18 at 14 55 40@2x

@taylorotwell Thanks for your suggestion, but unfortunately i can't do this on my end, because that error message will be duplicated (and the same) for all items in the array

$input = [
    'companies' => [
        [
            'name' => 'Foo'
        ],
        [
            'name' => null
        ],
        [
            'name' => null
        ]
    ]
];

Using your suggestion the validator will produce the below, without any indication to which item it refers to

Company names must be valid, non-empty string.
Company names must be valid, non-empty string.

There was a pr #35754 which introduced a new placeholder which might help in this case.

That's it, I don't want to pollute this pr anymore

commit 2ca2af35595ab5630614ba8310608be61375bd81
Author: Joseph Silber <contact@josephsilber.com>
Date:   Wed Jan 19 10:08:09 2022 -0500

    [9.x] Lazy collection constructor throws when passed a generator (#40493)

    * Lazy collection constructor throws when passed a generator

    * Update LazyCollection.php

    * Update LazyCollection.php

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit e2da8084eef48bd35cfc3864a040358aef43019d
Author: Tetiana Blindaruk <t.blindaruk@gmail.com>
Date:   Tue Jan 18 20:54:43 2022 +0200

    [9.x] update changelog

commit ac6fc32c2933d5868a2c0d2aea4af9405d710378
Author: Taylor Otwell <taylor@laravel.com>
Date:   Tue Jan 18 12:23:20 2022 -0600

    fix bad merge

commit 5371296aef2073ae5a5aafc94a5b8f19ab80d36b
Merge: cf3f386ac 96f0237ef
Author: Taylor Otwell <taylor@laravel.com>
Date:   Tue Jan 18 12:18:45 2022 -0600

    versino

commit cf3f386ac3bc27dee01e4644b4ceaca0e38cff51
Author: Taylor Otwell <taylor@laravel.com>
Date:   Tue Jan 18 10:45:03 2022 -0600

    formatting

commit 6ed9dc68f37c48decf29b2e0fa44a6d68f107950
Merge: be8e71501 e6017b7c5
Author: Taylor Otwell <taylor@laravel.com>
Date:   Tue Jan 18 10:43:06 2022 -0600

    Merge branch '9.x' of https://github.com/thibodelanghe/framework into thibodelanghe-9.x

commit be8e71501088131b3d048eec2c9946da8f169dc8
Merge: 367f92582 bd950e3cd
Author: Taylor Otwell <taylor@laravel.com>
Date:   Tue Jan 18 10:42:40 2022 -0600

    Merge branch '9.x' of github.com:laravel/framework into 9.x

commit 96f0237ef66128c4c31310946a9164a7bf037c1a
Author: Amir Rami <amirrami.ce@gmail.com>
Date:   Tue Jan 18 17:40:48 2022 +0100

    [8.x] Add `sscanf` to Stringable (#40472)

    * Add `sscanf` to Stringable

    * Replace unnecessary double quotes

    * Fix CS

    Co-authored-by: Amir <a.rami@adaptech.me>

commit e6017b7c58274a899f4fbcfba36d2b8a25f0a335
Author: Thibo De Langhe <thibo.delanghe@onlyhumans.com>
Date:   Tue Jan 18 17:06:57 2022 +0100

    Added closing dot to doc block

commit a588ac00492c765911727ab3ad9f6d2b80077200
Author: Thibo De Langhe <thibo.delanghe@onlyhumans.com>
Date:   Tue Jan 18 16:57:25 2022 +0100

    Added doc blocks and make use of the null safe operator instead of using a temp var

commit 8949a2e46b0f274f39c61eee8d5de1dc6a1f686b
Author: Taylor Otwell <taylor@laravel.com>
Date:   Tue Jan 18 09:51:42 2022 -0600

    version

commit bd950e3cdc167e04c603d97342b8a385fc8d978e
Author: Can Vural <can9119@gmail.com>
Date:   Tue Jan 18 16:46:57 2022 +0100

    Fixes remaining static<Tkey, TModel> usages in Eloquent collection (#40474)

commit 367f925823d89d0693455361bf1d821cf87ffe05
Author: Thibo De Langhe <thibo.delanghe@onlyhumans.com>
Date:   Tue Jan 18 16:28:38 2022 +0100

    Edited getConnection signature to allow backwards compatibility

commit c268e2756defc9561207a2c4b4f7400f777751f8
Author: Thibo De Langhe <thibo.delanghe@onlyhumans.com>
Date:   Tue Jan 18 16:11:10 2022 +0100

    Make use of new getConnection method signature

commit aa5ebc108d2cc5e9727d8189b5cff9469edf2b22
Author: Thibo De Langhe <thibo.delanghe@onlyhumans.com>
Date:   Tue Jan 18 16:09:13 2022 +0100

    Allow model defined connections to be used in testing instead of defaulting to the fallback connection

commit 6d29d4e9fb353447952bea196991032c8acca84c
Author: Antonio Pauletich <antonio.pauletich95@gmail.com>
Date:   Tue Jan 18 15:36:45 2022 +0100

    Remove return type will change annotations (#40471)

commit 8ec782978a4a99dc75b01a691f003c8d2614c38c
Author: Saya <chu121su12@gmail.com>
Date:   Tue Jan 18 22:33:06 2022 +0800

    [9.x] add `Http::connectTimeout` to set `connect_timeout` option (#40466)

commit e711113a4363946df17bd1d88b1b1fb0fcdcf03b
Author: Sander Muller <sander@mulver.nl>
Date:   Tue Jan 18 15:05:16 2022 +0100

    Fix docblock of $contents argument of PendingRequest->attach() (#40473)

commit 8a60e4f35a9344edc70b9a07aa2c205f3f166b70
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Mon Jan 17 19:24:47 2022 +0000

    [9.x] Improves default aliases API (#40453)

    * Improves default aliases API

    * Renames to `defaultAliases`

    * Renames to `defaultAliases`

commit ff907d5f7bfc8d76811eb587158f837604750572
Author: StyleCI Bot <bot@styleci.io>
Date:   Mon Jan 17 19:20:24 2022 +0000

    Apply fixes from StyleCI

commit d08eaf6f4f51f2a663e5b131e1b5327b80829a83
Author: Jordan Welch <JordanHWelch@gmail.com>
Date:   Mon Jan 17 13:20:07 2022 -0600

    [9.x] Add SeeInOrder Mailable assertions (#40460)

    * Test existing Mailable assertions

    * Add assertSeeInOrderHtml and assertSeeInOrderText

    * formatting

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit 3c72d43acfc8805fd51426515b0951ef5dec3af2
Author: Taylor Otwell <taylor@laravel.com>
Date:   Sun Jan 16 20:50:24 2022 -0600

    use not null check

commit 6aec92259797c2d9ee0e7348f960e039f8ccd326
Author: esthezia <esthezia@yahoo.com>
Date:   Mon Jan 17 01:22:06 2022 +0200

    [Database] Allow the creation of char columns with length 0

    The most effective way, storage-wise, to store boolean values in the database, in MySQL, is to use a `char(0)` column that will store NULL for false and "" (empty string) for true. So allow the creation of a char column with the length of zero.

    Note: This is only useful, and true, for MySQL. For PostgreSQL, for example, it's not.

commit 9db1d842561eb53de1719449fc6742b43e707f30
Author: Daniel LaBarge <daniel@artisanmade.io>
Date:   Sat Jan 15 09:16:25 2022 -0600

    Allow event listerns to be invokables when autodiscovered (#40419)

    Listen for `handle*()` or `__invoke()` methods on discovery of event listeners.

commit 78a2d6362ad22dd1f355a608f9b3601a8377b494
Author: Can Vural <can9119@gmail.com>
Date:   Sat Jan 15 16:04:28 2022 +0100

    Fixes containsStrict and modelKeys method typehints (#40416)

commit e98ae6d1b989ba054b5b9a62154a83bbbca4511c
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Sat Jan 15 14:59:57 2022 +0000

    Adds tests regarding `Request::hasSession` and `Request::getSession` (#40424)

commit b24b689a267488beaf2e50681811af1a5d8fb93a
Author: Taylor Otwell <taylor@laravel.com>
Date:   Fri Jan 14 14:57:53 2022 -0600

    formatting

commit 7d3998bbcda2940f4a6ae509f6f288bc66b5edd1
Merge: 3e8abad96 73d0ee647
Author: Taylor Otwell <taylor@laravel.com>
Date:   Fri Jan 14 14:57:04 2022 -0600

    Merge branch '9.x' of https://github.com/kastsecho/framework into kastsecho-9.x

commit 3e8abad96ea5473fde41ef9afd1ed3dbc3802752
Author: Taylor Otwell <taylor@laravel.com>
Date:   Fri Jan 14 14:52:29 2022 -0600

    formatting

commit 22e04b47f65e98de1f26aaa153d3dd29cec4fa8d
Merge: 89e0e56c3 78041a152
Author: Taylor Otwell <taylor@laravel.com>
Date:   Fri Jan 14 14:47:32 2022 -0600

    Merge branch '9.x' of https://github.com/koenhoeijmakers/framework into koenhoeijmakers-9.x

commit 78041a1529e2b11146939d4a0e9b607b98a9a5b6
Author: Koen Hoeijmakers <koen@hoeijmakers.me>
Date:   Fri Jan 14 18:04:35 2022 +0100

    remove function import

commit 89e0e56c3520a0d1c35106ff10d22d06274591bd
Author: Dries Vints <dries@vints.io>
Date:   Fri Jan 14 14:05:26 2022 +0100

    [9.x] Flysystem v3 support (#40411)

    * constraints

    * Flysystem v3 support

commit 05787a04e3259eb431b456cc8e163ea02384e3b1
Merge: 17831c285 4963e256b
Author: Taylor Otwell <taylor@laravel.com>
Date:   Fri Jan 14 07:02:31 2022 -0600

    Merge branch 'add-backoff-to-retry-helper' into 9.x

commit 4963e256bf8c92832e567c2bb6b54c2c4c395bb7
Author: Taylor Otwell <taylor@laravel.com>
Date:   Fri Jan 14 07:02:24 2022 -0600

    formatting

commit 17831c2858fd099d7a1c416eb29fdb0c9ff443ca
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Fri Jan 14 12:38:45 2022 +0000

    Fixes `Command::setHidden()` (#40415)

commit 45ca5073aaa8ad7180bc248f920f265588c0cae5
Author: Markus Hebenstreit <office@hebinet.at>
Date:   Fri Jan 14 10:00:02 2022 +0100

    Added backoff functionality to retry helper

commit 73d0ee647dc10f7f8fd452e15c171239a1f59e59
Author: Jared Lewis <jslewis90@outlook.com>
Date:   Fri Jan 14 03:59:21 2022 -0500

    Add Bootstrap 5 styled pagination

commit d464ff5f594a4f8183520d30c807680384e84571
Author: StyleCI Bot <bot@styleci.io>
Date:   Fri Jan 14 07:47:44 2022 +0000

    Apply fixes from StyleCI

commit 4ec36ec17ecb3b54aab38fb232a8260a238ce0bc
Author: Dries Vints <dries@vints.io>
Date:   Fri Jan 14 08:47:21 2022 +0100

    Fix some docblocks

commit a5a01581871ab0fdf35f009cb9da01fa0a2a6107
Author: StyleCI Bot <bot@styleci.io>
Date:   Thu Jan 13 21:06:12 2022 +0000

    Apply fixes from StyleCI

commit 35789fd0701376cbc1c2fdb6ef519cebc5512034
Author: Taylor Otwell <taylor@laravel.com>
Date:   Thu Jan 13 15:05:36 2022 -0600

    revert broken pr

commit 9debcfe80d86b9d3d9007cfefb6ed2acedc79fd8
Author: Can Vural <can9119@gmail.com>
Date:   Thu Jan 13 19:29:22 2022 +0100

    [9.x] Uses `static` instead `static<TKey, TValue>` (#40393)

    * Uses static instead static<TKey, TValue>

    * Fixes variadic PHPDoc type

    * Uses static instead static<TKey, TValue> in EnumeratesValues trait

    * Fixes CS

commit c9101668667c517bc1bdc5324283d4d4a3b159fa
Author: Craig Morris <craig.michael.morris@gmail.com>
Date:   Thu Jan 13 18:28:20 2022 +0000

    Fix namesapce in test (#40395)

commit 029bb991df56657c59df08f878d7d012d1b2c79b
Author: Koen Hoeijmakers <koen@hoeijmakers.me>
Date:   Thu Jan 13 18:59:05 2022 +0100

    style-ci fix

commit 7ad512011f6e7a24c689d56214f4a2948a5328fc
Author: Koen Hoeijmakers <koen@hoeijmakers.me>
Date:   Thu Jan 13 18:56:46 2022 +0100

    style-ci fix

commit 1be2faf2f8a7894cb80feb4317e10663d5a85211
Author: Koen Hoeijmakers <koen@hoeijmakers.me>
Date:   Thu Jan 13 18:31:11 2022 +0100

    test shouldGatherMiddleware

commit c0a0086fdebcd4abc5fae5dac90c02d30d0952cd
Author: Taylor Otwell <taylor@laravel.com>
Date:   Thu Jan 13 08:48:22 2022 -0600

    [9.x] Add session decorator (#40378)

    * add decorator

    * Apply fixes from StyleCI

    * fix docs

    Co-authored-by: StyleCI Bot <bot@styleci.io>

commit 82cae4161f9d4f3174789abc157efb9c28a3ed0a
Merge: 0a4539cd2 8091f0755
Author: Dries Vints <dries@vints.io>
Date:   Thu Jan 13 09:50:19 2022 +0100

    Merge branch '8.x' into 9.x

    # Conflicts:
    #	src/Illuminate/Foundation/Application.php

commit b7dfe7c01b8b2b55cddbf52f5d2c5cee046fdb6e
Author: Koen Hoeijmakers <koen@hoeijmakers.me>
Date:   Thu Jan 13 09:49:36 2022 +0100

    add shouldGatherMiddleware to ControllerDispatcher interface

commit 0a4539cd2b7e16b2f796024724f31ed61639d96e
Author: Dries Vints <dries@vints.io>
Date:   Thu Jan 13 09:47:59 2022 +0100

    Update CHANGELOG.md

commit afbadf6ad327854bd46002ecd5012f6ddc753b42
Author: Taylor Otwell <taylor@laravel.com>
Date:   Wed Jan 12 16:36:57 2022 -0600

    use throwable

commit e850bcd33d4cc48a419c0f6a516e2e8a1690135f
Author: Taylor Otwell <taylor@laravel.com>
Date:   Wed Jan 12 14:32:45 2022 -0600

    [9.x] Change default behavior of unvalidated array keys (#40368)

    * chnage default behavior

    * update test

commit 1eb0ac85aaded5b80cfc7b480fb37b1c1c3d9663
Author: Taylor Otwell <taylor@laravel.com>
Date:   Wed Jan 12 13:45:29 2022 -0600

    update split script

commit 4c7e1c4608b44484b3e305535cb861151a1bf69c
Author: Taylor Otwell <taylor@laravel.com>
Date:   Wed Jan 12 13:45:21 2022 -0600

    update release script

commit a46aafa539054265ce92d0f9b7832d279449151b
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Wed Jan 12 18:56:12 2022 +0000

    Improves `Collection::mapInto` types (#40374)

commit 7854c340200f6a04b052e32e20170215842a1fb8
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Wed Jan 12 18:56:00 2022 +0000

    Fixes Collection::groupBy types (#40373)

commit 9adc7a8d779b0ff51251d509085277ce9e78e1d0
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Wed Jan 12 18:55:51 2022 +0000

    [9.x] Fixes `Collection::keyBy` related types (#40372)

    * Fixes Collection::keyBy types

    * Fixes Collection::keyBy types

commit b88546cb137b80afe5b40b338f4d8a1a404c8dd5
Author: Lucas Michot <lucas@semalead.com>
Date:   Wed Jan 12 15:41:57 2022 +0100

    [9.x] Avoid nested conditions (#40355)

    * No need to use multiple conditions

    * Fix StyleCI

    * formatting

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit 3d336c55285e4adea1490ad98075b5ee8c2b522a
Author: Lucas Michot <lucas@semalead.com>
Date:   Wed Jan 12 15:00:53 2022 +0100

    Replace strpos with str_contains and str_starts_with (#40353)

commit b52ced2934f1c61af94dd02ea8032dd67c64ce86
Author: Lucas Michot <lucas@semalead.com>
Date:   Wed Jan 12 15:00:22 2022 +0100

    Use ?-> instead of optional (#40354)

commit be3e20c683cf231c1e1f39934c69e2e045d4e531
Author: Ash Allen <mail@ashallendesign.co.uk>
Date:   Wed Jan 12 03:15:31 2022 +0000

    [9.x] Updated to use `str_starts_with` (#40349)

    * Updated to use str_starts_with().

    * Style updates.

commit 312a5577cc34c366a64ba855068205b1f82c1998
Author: Dries Vints <dries@vints.io>
Date:   Tue Jan 11 16:33:22 2022 +0100

    Update psr/container-implementation constraints (#40340)

commit 0b187784a1f0c79a0b793fc9925c42749913bc56
Author: Dries Vints <dries@vints.io>
Date:   Mon Jan 10 18:34:58 2022 +0100

    [9.x] Fix master CI (#40329)

    * wip

    * wip

    * wip

    * wip

    * wip

    * fix builder

    * fix

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit f42aaa5c50f487e22895dec0bbcef30fbe203167
Author: Dries Vints <dries@vints.io>
Date:   Mon Jan 10 16:37:57 2022 +0100

    wip

commit 6c105348d007be7bfa847114af7bbb082ef08e42
Author: Dries Vints <dries@vints.io>
Date:   Mon Jan 10 16:31:01 2022 +0100

    wip

commit 580df99c842eb264b62672b442f007082a9d20fa
Author: Dries Vints <dries@vints.io>
Date:   Mon Jan 10 16:30:05 2022 +0100

    wip

commit f3b7651bd0ea0fcd4261c4669aadf1d1d5d5382f
Author: StyleCI Bot <bot@styleci.io>
Date:   Mon Jan 10 15:24:00 2022 +0000

    Apply fixes from StyleCI

commit cc03211ee8dd4af42ef4e147fe7cb826cbd321d2
Merge: 5d8eb84f9 92ce2b9d1
Author: Dries Vints <dries@vints.io>
Date:   Mon Jan 10 16:23:21 2022 +0100

    Merge branch '8.x'

    # Conflicts:
    #	.github/workflows/tests.yml
    #	composer.json
    #	src/Illuminate/Broadcasting/composer.json
    #	src/Illuminate/Collections/Collection.php
    #	src/Illuminate/Console/Scheduling/ScheduleListCommand.php
    #	src/Illuminate/Database/Query/Builder.php
    #	src/Illuminate/Support/composer.json

commit 5d8eb84f93703f16cab9606a800cf7fe2426d850
Author: Dries Vints <dries@vints.io>
Date:   Mon Jan 10 15:15:53 2022 +0100

    Update FilesystemManager.php (#40321)

commit 5da821b474af43249b903434b94b80aaf841a39f
Author: Dries Vints <dries@vints.io>
Date:   Mon Jan 10 11:33:49 2022 +0100

    Update FilesystemManager.php

commit 13e5fbf4c2a2effb28d18686efd2d49c21b56e50
Author: Taylor Otwell <taylor@laravel.com>
Date:   Fri Jan 7 15:26:42 2022 -0600

    wip

commit b61eb6feefd28675dc0fce373c00ae034ff82420
Author: Taylor Otwell <taylor@laravel.com>
Date:   Fri Jan 7 15:26:03 2022 -0600

    wip

commit bb4035b76dac1f1e7b412688dd3ac16185be72cf
Author: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com>
Date:   Fri Jan 7 16:06:55 2022 +0100

    Throw invalid argument exception from cache helper (#40287)

commit 281ed58eb05259f307697f41a35f4824b2820f79
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Thu Jan 6 23:26:04 2022 -0500

    [9.x] Adds implicit `Enum` route binding (#40281)

    * Adds implicit Backed Enum route binding

    * Fixes tests on PHP 8.0

    * Only accepts backed enums with `string` backing type

    * Refactors name of `isParameterBackedEnum`

    * Rewords docs

    * formatting

    * fix variable

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit 14155b620d0ebbf6b8fe69acaca5afe8029a4372
Author: Mior Muhammad Zaki <crynobone@gmail.com>
Date:   Fri Jan 7 06:58:41 2022 +0800

    [9.x] Generic Type for `Illuminate\Support\Fluent` (#40273)

    * wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

    * wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

    * Implements existing generic interfaces

    Co-authored-by: Nuno Maduro <enunomaduro@gmail.com>

commit ac7e72a5e58e3e71e776da507eb6ed3a7e6a03ac
Author: Taylor Otwell <taylor@laravel.com>
Date:   Thu Jan 6 10:32:13 2022 -0600

    formatting

commit 4c513ef1749111d1a822bcc259d1432a2f4b9d61
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Thu Jan 6 11:24:10 2022 -0500

    [9.x] Reinvents `route:list` command (#40269)

    * Improves CLI output of `route:list` command

    * Uses same vertical padding

    * Refactors mutation of routes

    * Fixes right padding on non-verbose mode

    * Fixes extra spacing

    * Displays name on non-verbose mode

    * minor formatting

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit e6c8aaea886d35cc55bd3469f1a95ad56d53e474
Author: Mior Muhammad Zaki <crynobone@gmail.com>
Date:   Thu Jan 6 22:38:00 2022 +0800

    [9.x] Use standard path helper for `Application::langPath()` (#40274)

    * [9.x] Use standard path helper for Application::langPath()

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

    * Utilise `useLangPath()` instead of trying to resolve `is_dir()` on each method call.

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

    * wip

    Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

commit b87ff62e44cfa854b2bdc8178029a7ba5ae6743c
Author: Dries Vints <dries@vints.io>
Date:   Thu Jan 6 15:33:09 2022 +0100

    [9.x] Flysystem SFTP v3 (#40279)

    * update dependencies

    * Update to league/flysystem-sftp-v3

commit e652a6b00e9bcc21765fbda917f48b8a2f172f9b
Merge: 78d761e97 5321e34a3
Author: Dries Vints <dries@vints.io>
Date:   Thu Jan 6 11:06:31 2022 +0100

    Merge branch '8.x'

    # Conflicts:
    #	CHANGELOG-6.x.md
    #	CHANGELOG-8.x.md
    #	src/Illuminate/Broadcasting/Broadcasters/AblyBroadcaster.php
    #	src/Illuminate/Collections/Traits/EnumeratesValues.php
    #	src/Illuminate/Database/DBAL/TimestampType.php
    #	src/Illuminate/Database/Eloquent/Builder.php
    #	src/Illuminate/Filesystem/FilesystemAdapter.php
    #	src/Illuminate/Foundation/Application.php
    #	src/Illuminate/Mail/Transport/MailgunTransport.php
    #	src/Illuminate/Mail/Transport/SesTransport.php
    #	tests/Http/HttpClientTest.php

commit 78d761e97351fdf5494045349f306f0736a27c7a
Merge: 9191d2ccd ad3248921
Author: Taylor Otwell <taylor@laravel.com>
Date:   Tue Jan 4 12:50:06 2022 -0600

    Merge branch 'stevebauman-master'

commit ad3248921a25f9c047a787552c331c2e26c3a739
Author: Taylor Otwell <taylor@laravel.com>
Date:   Tue Jan 4 12:49:59 2022 -0600

    formatting

commit 5828d6cfb7acc2e3f5493513d08798d4f77b2a93
Author: Dries Vints <dries@vints.io>
Date:   Tue Jan 4 16:58:58 2022 +0100

    [9.x] Add support for psr/simple-cache v2 and v3 (#40249)

    * Add support for psr/simple-cache v2 and v3

    * wip

    * wip

commit 9191d2ccdd63d340794f58545a69636e94b1753b
Author: Dries Vints <dries@vints.io>
Date:   Tue Jan 4 16:58:58 2022 +0100

    [9.x] Add support for psr/simple-cache v2 and v3 (#40249)

    * Add support for psr/simple-cache v2 and v3

    * wip

    * wip

commit 6f83de81b1b492a8d7c785396e7f02c8a902bc82
Author: Steve Bauman <steven_bauman@outlook.com>
Date:   Tue Jan 4 09:10:18 2022 -0500

    Spacing

commit 47416128b151eff5189efc7b1b6598e3dd082ce8
Author: Steve Bauman <steven_bauman@outlook.com>
Date:   Tue Jan 4 09:09:18 2022 -0500

    Spacing

commit 3a87e6c490ee9848953f15ae6c7032c91488a64d
Author: Steve Bauman <steven_bauman@outlook.com>
Date:   Tue Jan 4 09:06:28 2022 -0500

    Add ability to supply HTTP client methods with `Arrayable` instances

commit 924394d59bac953f4f0b142e3199c34da21b69ce
Author: Samuel Štancl <samuel.stancl@gmail.com>
Date:   Mon Jan 3 20:37:11 2022 +0100

    [9.x] Add resolveMiddleware() method to Router (#40165)

commit e076a56183ddf6040174aa9a9e1854da4ceb866e
Author: Mohamed Said <themohamedsaid@gmail.com>
Date:   Sun Jan 2 23:55:43 2022 +0200

    [9.x] Add default timeout and connection timeout for the HTTP Client (#40187)

    * add default timeout and connection timeout for the HTTP client

    * Update PendingRequest.php

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit 2beec5ddd86f19e0ca2cdd8d3325ab2c5a4bbe0a
Author: Selçuk Çukur <5716652+selcukcukur@users.noreply.github.com>
Date:   Thu Dec 30 23:36:42 2021 +0300

    [9.x] Used str_contains instead of strpos. (#40207)

    * Used `str_contains` instead of `strpos`.

    * Used `str_contains` instead of `strpos`.

commit 79952ace1625572f596f2fc83b28a519911da9da
Author: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com>
Date:   Tue Dec 21 23:39:12 2021 +0100

    [9.x] Add cache-based maintenance mode support (#40102)

    * Add cache based maintenance mode support

    * Add a maintenance mode driver manager

    * Fix code style

    * formatting

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit e7237f9a8d2adaf0277ea5d01f0109459b6be641
Merge: 3ad64c525 102df6698
Author: Taylor Otwell <taylor@laravel.com>
Date:   Mon Dec 20 13:54:57 2021 -0600

    Merge branch 'punyflash-master'

commit 102df66988f6010620befb73a5f8586de9f75173
Author: Taylor Otwell <taylor@laravel.com>
Date:   Mon Dec 20 13:54:18 2021 -0600

    formatting

commit a5f21d60e04511c31c3851bfb2dd1f3ba812b216
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Mon Dec 20 14:44:07 2021 -0500

    [9.x] Removes core class aliases from the skeleton (#40062)

    * Allows to remove core class `app.aliases` from the skeleton

    * Removes `Redis` alias

    * Merges configurations

    * Reverts changes on Register Facades

    * Adds `Facade::defaultAliases`

    * Apply fixes from StyleCI

    Co-authored-by: Taylor Otwell <taylorotwell@users.noreply.github.com>

commit 61e3e25b415c06d9b4c967a3f11de6b548776636
Author: Martin Krisell <martin.krisell@gmail.com>
Date:   Mon Dec 20 15:50:37 2021 +0100

    Skip unnecessary check before calling openssl_encrypt (#40108)

commit 3ad64c525226873db57079d35bc85fee79ee0279
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Mon Dec 20 14:44:07 2021 -0500

    [9.x] Removes core class aliases from the skeleton (#40062)

    * Allows to remove core class `app.aliases` from the skeleton

    * Removes `Redis` alias

    * Merges configurations

    * Reverts changes on Register Facades

    * Adds `Facade::defaultAliases`

    * Apply fixes from StyleCI

    Co-authored-by: Taylor Otwell <taylorotwell@users.noreply.github.com>

commit ca53127994dda58a2dc4a4fe70f1528a1631bb02
Author: PunyFlash <puny.flash@gmail.com>
Date:   Mon Dec 20 18:10:22 2021 +0200

    Add observer mapping

commit 703f87b2166e81c8ea77cc2ae3d4898341b575d8
Author: Martin Krisell <martin.krisell@gmail.com>
Date:   Mon Dec 20 15:50:37 2021 +0100

    Skip unnecessary check before calling openssl_encrypt (#40108)

commit 66e69a2f674515cd0aa18fc596d228e4d96a959e
Author: Taylor Otwell <taylorotwell@users.noreply.github.com>
Date:   Fri Dec 17 19:52:51 2021 +0000

    Apply fixes from StyleCI

commit dc4712609370415d6b29f222d4c3bfeabf10ff9f
Author: Wim Ulkeman <wimulkeman@hotmail.com>
Date:   Fri Dec 17 20:52:28 2021 +0100

    [9.x] Move maintenance mode logic (#40070)

    * chore (maintenance): move maintenance mode logic

    Moving the maintenance mode logic to its own class. This enables users to extend/overwrite the class with their own logic.

    Overwriting the logic may be needed if for example the application is running on multiple servers.

    Fixes #36474

    * refactor (maintenance): add isUp method

    Adding the isUp method to check if the application is up or is down for maintenance.

    Relates to #36474

    * doc (maintenance): document code

    Extend the documentation about what the code does. Also use FQN.

    Relates to #36474

    * fix (maintenance): correctly check if in maintenance

    Relates to #36474

    * refactor (maintenance): use make method

    Use the make method instead of the app function to retrieve an instance of the MaintenanceMode container.

    Relates to #36474

    * doc (maintenance): update docblock

    Update the docblock with the newly added method param.

    Relates to #36474

    * doc (maintenance): update docblock

    Update the docblock with the newly added method param.

    Relates to #36474

    * style (doc): update documentation style

    Updating documentation style to comply to the style used within the Laravel codebase.

    * style (doc): update documentation style

    Updating documentation style to comply to the style used within the Laravel codebase.

    * refactor (maintenance): change namespace

    Move the class from its own namespace to the Foundation namespace.

    Relates to #36474

    * style (doc): update documentation style

    Updating documentation style to comply to the style used within the Laravel codebase.

    * style (doc): update documentation style

    Updating documentation style to comply to the style used within the Laravel codebase.

    * Update src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php

    Co-authored-by: Dries Vints <dries@vints.io>

    * Update src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php

    Co-authored-by: Dries Vints <dries@vints.io>

    * refactor (maintenance): move to application

    Create an application methode to retrieve the MaintenanceMode instance. This method reduces the need to fetch the MaintenanceMode with the usage of an additional argument in the middleware.

    Relates to #36474

    * doc (maintenance): add DockBlock

    Adding documentation for the newly added methods.

    Relates to #36474

    * refactor (maintenance): use application method

    Use the application method instead of using autowiring. The application method provides the MaintenanceMode instance which removes the requirement to inject the class in the handler method.

    Relates to #36474

    * Update src/Illuminate/Foundation/MaintenanceMode.php

    Co-authored-by: Dries Vints <dries@vints.io>

    * Update src/Illuminate/Foundation/MaintenanceMode.php

    Co-authored-by: Dries Vints <dries@vints.io>

    * refactor (maintenance): remove comparison

    Remove the comparison with the false value. The method always returns a bool which only allows a true or false return value. This make the comparison redundant.

    Relates to #36474

    * chore (code): remove unused import

    Remove the unused import. Because the FQN is used in the DocBlock the import has become redundant.

    * refactor (maintenance): add interface

    Add an interface under the contracts to enable developers to easily extend the MaintenanceMode class.

    * style (doc): update documentation style

    Updating documentation style to comply to the style used within the Laravel codebase.

    * refactor (maintenance): bind instance to contract

    Bind the default MaintenanceMode class to the contract reference in the service container.

    This enables users to set-up their own contract binding to overwrite the default Maintenance Mode behavior.

    * style (doc): update documentation style

    Updating documentation style to comply to the style used within the Laravel codebase.

    * Update src/Illuminate/Foundation/Providers/FoundationServiceProvider.php

    Co-authored-by: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com>

    * formatting and renaming

    Co-authored-by: Wim Ulkeman <wulkeman@assuradeurengilde.nl>
    Co-authored-by: Dries Vints <dries@vints.io>
    Co-authored-by: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com>
    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit ec7045ef0599e1ae64fd3a97e73b64de3ddb3693
Author: Matt Kingshott <51963402+mattkingshott@users.noreply.github.com>
Date:   Fri Dec 17 16:43:27 2021 +0000

    [9.x] Allow HTTP client requests with retries to optionally throw RequestExceptions (#40079)

    * Update PendingRequest.php

    * Update Factory.php

    * Update HttpClientTest.php

commit 8e46f9ce862162c8820aee24113d41cc7763c7ad
Author: Graham Campbell <GrahamCampbell@users.noreply.github.com>
Date:   Fri Dec 17 16:33:17 2021 +0000

    Restore psr/log v1 support (#40093)

commit bcf9ed1d415fc11b4ba7d956b44284938d2ce467
Author: Dries Vints <dries@vints.io>
Date:   Fri Dec 17 15:49:46 2021 +0100

    Fix vendor publish command (#40081)

commit 32026038a448a939014faf62894cfd1e75889066
Author: Dries Vints <dries@vints.io>
Date:   Fri Dec 17 15:45:15 2021 +0100

    [9.x] PSR Log v3 (#40087)

    * PSR Log v3

    * Apply fixes from StyleCI

    * Re-add support for psr/log v2

    * formatting

    Co-authored-by: Taylor Otwell <taylorotwell@users.noreply.github.com>
    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit 77b0e11c2e47a4fb89566a6ab93f4816a19ef829
Merge: a1f66ba8e a04927917
Author: Dries Vints <dries@vints.io>
Date:   Fri Dec 17 08:45:09 2021 +0100

    Merge branch '8.x'

    # Conflicts:
    #	CHANGELOG-8.x.md
    #	composer.json
    #	src/Illuminate/Broadcasting/composer.json
    #	src/Illuminate/Foundation/Application.php
    #	src/Illuminate/Mail/composer.json

commit a1f66ba8e36f7ea221555bb8ed3a43c4999be001
Author: Mateus Junges <mateus@junges.dev>
Date:   Thu Dec 16 13:26:58 2021 -0300

    [9.x] Fix array to string conversion when using custom validation messages for size rules (#40074)

    * fix array to string conversion when using custom validation messages for size rules

    * ci fixes

    * remove missing comment

    * formatting

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit 96d2b48e45b9d113b95ce0edf542b3ffc76c5176
Author: vlakoff <vlakoff@gmail.com>
Date:   Wed Dec 15 14:47:02 2021 +0100

    Proper fix when provided path is '0' (#40050)

commit c7d6fe53cdcdb9dbc09ffa62c50cba7b2b98b1a7
Merge: 94e846b4d f1d8ed543
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Tue Dec 14 16:50:42 2021 +0000

    Merge branch '8.x'

commit 94e846b4db46229a7939d9042d2557123fe45035
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Tue Dec 14 08:55:12 2021 -0500

    [9.x] Allows to remove the `server.php` file (#40034)

    * Allows to remove the `server.php` file

    * Apply fixes from StyleCI

    Co-authored-by: Taylor Otwell <taylorotwell@users.noreply.github.com>

commit 8dde758e7c93771ccc2c3d6423f9b69cd192525e
Author: Dries Vints <dries@vints.io>
Date:   Tue Dec 14 09:17:31 2021 +0100

    Update composer.json

commit f00a541222fdc622dea543a08fef3e113ac6f37d
Author: ppodds <oscar20020629@gmail.com>
Date:   Tue Dec 14 02:05:39 2021 +0800

    refactor getTrustedHeaderNames with match function (#40019)

commit ad2141fa6a872818461ba509e7b21316576a910e
Author: ppodds <oscar20020629@gmail.com>
Date:   Mon Dec 13 22:58:43 2021 +0800

    [9.x] Support x-forwarded-prefix in TrustProxies.php (#40014)

    * support x-forwarded-prefix

    * fix TrustProxies code style

    * test x-forwarded-prefix in TrustProxiesTest

commit b11f946bea7595636aeeb024943dc0b9f59dff20
Author: Andrey Filippov <afilippov1985@users.noreply.github.com>
Date:   Mon Dec 13 18:57:59 2021 +0400

    case when '0' passed (#40013)

commit e70cb9d69a379f79881d7d609d99713a94890e26
Merge: bb1f59b5d f3e5cb3a0
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Mon Dec 13 00:05:05 2021 +0000

    Merge branch '8.x'

commit bb1f59b5d0ff308b8d129a9639f04ff8940694dd
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Fri Dec 10 13:05:31 2021 +0000

    Imports without model events trait on seeds (#39974)

commit 985b2cf1845b544cdfd744ee68be2dfa95652c51
Author: Quynh Nguyen <seriquynh@gmail.com>
Date:   Thu Dec 9 19:56:13 2021 +0700

    Fix ThrottleRequestsException (#39951)

commit 8bbe427b177e0eeb35fa337cd73dd196234f9efd
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Wed Dec 8 13:54:49 2021 +0000

    [9.x] Adds `WithoutModelEvents` trait for running seeds without Model Events (#39922)

    * Adds `WithoutEvents` trait for application seeders

    * Renames `WithoutEvents` to `WithoutModelEvents`

    * Adjusts comment

    Co-authored-by: James Brooks <james@alt-three.com>

    Co-authored-by: James Brooks <james@alt-three.com>

commit c892c2cc2991062f14da55a7661f00bc3b083738
Author: rennokki <rennokki@gmail.com>
Date:   Wed Dec 8 15:05:42 2021 +0200

    [9.x] Pusher Client instance initialization (#39924)

    * Added support for client in Pusher instance

    * Reverted accidental merge conflict changes

    * formatting

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit 1873d2a68a37947348c5bacc7b9251b06b5f0e49
Author: Quynh Nguyen <seriquynh@gmail.com>
Date:   Wed Dec 8 20:02:01 2021 +0700

    [9.x] Refactor ExceptionHandler render method (#39930)

    * Refactor ExceptionHandler render method

    * Restore unexpected format change

    * Fix coding style

    * Fix coding style

    * formatting

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit d8bea92fbfaa7d7a83fe31bf01cd16a5c5d253df
Author: Chris Morrell <inxilpro@users.noreply.github.com>
Date:   Tue Dec 7 16:37:40 2021 -0500

    [9.x] Refactor scheduled event lifecycle (#39539)

    * Scheduled event lifecycle refactor

    * Address background callbacks

    * Code style

    * StyleCI

    * formatting

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit dc768b4ee10a89d6a6a1f3d5b2c0a0b164fc33b6
Merge: eb66b9669 857964de3
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Tue Dec 7 15:10:32 2021 +0000

    Merge branch '8.x'

commit eb66b96691dc612854c3ffb5f6535545666f99dd
Author: Jonas Staudenmeir <mail@jonas-staudenmeir.de>
Date:   Mon Dec 6 15:16:44 2021 +0100

    Remove parameter from DecoratesQueryBuilder::delete() (#39900)

commit faa56bd0b1e6e90aae070a31d9c7cf0baea8c680
Author: Dries Vints <dries@vints.io>
Date:   Fri Dec 3 17:02:07 2021 +0100

    Re-enable PostgreSQL build (#39890)

commit 940b18fb76211e660132bc51a03dfc48ab6115c8
Merge: 4a57b48f1 1f7004008
Author: Dries Vints <dries@vints.io>
Date:   Fri Dec 3 16:49:44 2021 +0100

    Merge branch '8.x'

    # Conflicts:
    #	src/Illuminate/Database/Query/Builder.php

commit 4a57b48f10fb99f58593fdd54e051cf8d9bda1f8
Author: Dries Vints <dries@vints.io>
Date:   Thu Dec 2 21:59:17 2021 +0100

    wip

commit 9c88e7cfa39bde1a278d44cc792878a5239d79ff
Author: Dries Vints <dries@vints.io>
Date:   Thu Dec 2 21:54:13 2021 +0100

    wip

commit 1d6380da6e5e5b135b5e55f86ba70869de5caac1
Author: Dries Vints <dries@vints.io>
Date:   Thu Dec 2 21:52:27 2021 +0100

    wip

commit 68db4e251f839bbc4aa77b222ef9729c2e27b749
Merge: 6cb52b213 0b0d3c53b
Author: Dries Vints <dries@vints.io>
Date:   Thu Dec 2 21:51:43 2021 +0100

    Merge branch '8.x'

    # Conflicts:
    #	.github/workflows/tests.yml
    #	CHANGELOG-8.x.md
    #	composer.json
    #	src/Illuminate/Cache/composer.json
    #	src/Illuminate/Collections/composer.json
    #	src/Illuminate/Console/composer.json
    #	src/Illuminate/Cookie/composer.json
    #	src/Illuminate/Database/composer.json
    #	src/Illuminate/Filesystem/composer.json
    #	src/Illuminate/Foundation/Application.php
    #	src/Illuminate/Http/composer.json
    #	src/Illuminate/Queue/composer.json
    #	src/Illuminate/Routing/composer.json
    #	src/Illuminate/Session/composer.json
    #	src/Illuminate/Support/composer.json
    #	src/Illuminate/Validation/composer.json

commit 6cb52b213ab1f522c6c7005dc575e4f836cdf7db
Author: Quynh Nguyen <seriquynh@gmail.com>
Date:   Wed Dec 1 19:49:08 2021 +0700

    Replace foreach by collection contains in Request class (#39857)

commit 8d7c7a44bd919e2567d61796b71b254009e6a8cd
Author: Beau Simensen <beau@dflydev.com>
Date:   Tue Nov 30 08:30:17 2021 -0600

    Add giveConfig to ContextualBindingBuilder (#39819)

commit 49aac46f7c1bb9d9e635b1542cfb9925073f8244
Author: Dries Vints <dries@vints.io>
Date:   Tue Nov 30 15:15:37 2021 +0100

    Use Laravel call for retrieving Session (#39830)

commit 63bb589b760b6497c840858409e3b5da0ee287de
Author: Sebastian De Deyne <sebastiandedeyne@gmail.com>
Date:   Mon Nov 29 20:36:57 2021 +0100

    Add callOnce to Seeder (#39812)

commit ee5efbccde388b7ceefac6a553be1d9b95801c25
Author: Matan Yadaev <matan.yed@gmail.com>
Date:   Mon Nov 29 16:42:42 2021 +0200

    [9.x] Improve Collection's callable default return types (#39805)

    * improve collection callable default return types

    * change callable to closure

    * fix enumerable closure default return types

    * Disable PostgreSQL build for now

    * improve collection callable default return types

    * change callable to closure

    * fix enumerable closure default return types

    Co-authored-by: Dries Vints <dries@vints.io>

commit de98bd0bf622feaad03da8fb2edb8edb2577a087
Merge: ae3975744 606ac0a38
Author: Dries Vints <dries@vints.io>
Date:   Mon Nov 29 15:32:39 2021 +0100

    Merge branch '8.x'

    # Conflicts:
    #	CHANGELOG-6.x.md
    #	CHANGELOG-8.x.md
    #	src/Illuminate/Database/Eloquent/Builder.php
    #	src/Illuminate/Foundation/Application.php

commit ae39757442badcd27f11c7bcfa63f88eec7e486e
Author: Dries Vints <dries@vints.io>
Date:   Mon Nov 29 14:18:35 2021 +0100

    Disable PostgreSQL build for now

commit 9894c2c64dc70f7dfda2ac46dfdaa8769ce4596a
Author: Jason McCreary <jason@pureconcepts.net>
Date:   Thu Nov 18 09:51:53 2021 -0500

    [9.x] Remove `assertDeleted` (#39661)

    * Remove assertDeleted

    * Correct names

commit cea563d48e944a55f8e42042a5a93013ed58d4ad
Merge: 156cc09b4 989e1daa5
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Wed Nov 17 15:08:50 2021 +0000

    Merge branch '8.x'

commit 156cc09b46cab5c0a5afa1ae73d3b3cf23431f21
Merge: 5646989ef aa2a02d6d
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Wed Nov 17 14:54:42 2021 +0000

    Merge branch 'master' of https://github.com/laravel/framework

commit 5646989ef626f0418aac6cef0b89876ac44e3e65
Merge: 8f9ddea44 8b36ce2ec
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Wed Nov 17 14:54:33 2021 +0000

    Merge branch '8.x'

commit aa2a02d6d3ee3e40e9ca23d76cb94859c2a94f4f
Author: Bogdan Kharchenko <32746389+bogdankharchenko@users.noreply.github.com>
Date:   Wed Nov 17 09:54:32 2021 -0500

    [9.x] Use Relative View Path Name When Hashing Compiled Views (#39642)

    * [9.X] Use Relative View Path When Hashing Compiled Views

    * Set basePath default

    * formatting

    * add config option

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit 8f9ddea4481717943ed4ecff96d86b703c81a87d
Author: Andrey Filippov <afilippov1985@users.noreply.github.com>
Date:   Wed Nov 17 18:46:34 2021 +0400

    [9.x] Fix \Illuminate\Support\Facades\App::storagePath() method ignores $path argument (#39648)

    * add $path argument to storagePath()

    * Update Application.php

    * formatting

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit e13132b716a317aca54e9d25133edc31d4373d18
Author: Dries Vints <dries@vints.io>
Date:   Tue Nov 16 15:28:43 2021 +0100

    [9.x] Fix postgresql build (#39531)

    * Fix PostgreSQL build

    * wip

    * Gracefully handle schema key deprecation

commit 5e0b273ae3012cbb1e959efe4627f03811b705cd
Author: Tobias Petry <tp@webstrategy.de>
Date:   Mon Nov 15 22:17:32 2021 +0100

    use jsonb type for pgsql whereJsonLength (#39619)

commit 2534e000a4c930dee93736ab72cfc145127cac29
Author: Ahmed Mohamed Abd El Ftah <ahmedabdelftah95165@gmail.com>
Date:   Mon Nov 15 23:06:21 2021 +0200

    Modify DatabaseRule to accept Arrayable instance inside where methods (#39621)

commit c46d7351161c867b7e6b02b3a01257de34867993
Author: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com>
Date:   Mon Nov 15 21:09:11 2021 +0100

    Exclude PHPStan related files from distributions (#39622)

commit 5dc64fd90b67d8b14d2fb55f1db5b0ee4ef523b4
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Mon Nov 15 20:07:06 2021 +0000

    Check types only in stable versions of PHP (#39617)

commit 23cdfcf3362db70c911269bc1d02913b4a09dabb
Author: Quynh Nguyen <seriquynh@gmail.com>
Date:   Mon Nov 15 21:45:52 2021 +0700

    [9.x] Use match expression where possible (#39583)

    * Use match expression where possible

    * Fix coding style

    * Remove unneeded parentheses

commit 4baf4f743baeccce5abd4d51b86cbf00f0970daa
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Mon Nov 15 14:31:49 2021 +0000

    Makes `with` generic (#39615)

commit 032c69a1ef2c693b2147309591612b9c4ae9eae1
Author: Quynh Nguyen <seriquynh@gmail.com>
Date:   Mon Nov 8 22:13:08 2021 +0700

    [9.x] Use request isMethod instead of method comparison (#39526)

    * Use request isMethod instead of method comparison

    * Fix testGuestPutPreviousUrlInSession

commit 535f1847a3017ff80d75fd26ef4029861ba74abf
Author: Dries Vints <dries@vints.io>
Date:   Mon Nov 8 14:34:29 2021 +0100

    Remove minimum versions in builds

commit ba2e05fd9491f7de4a3e5b1e418ce604a302de0b
Merge: 481cd52e0 0218f6b82
Author: Dries Vints <dries@vints.io>
Date:   Mon Nov 8 11:40:05 2021 +0100

    Merge branch '8.x'

commit 481cd52e06cfa56c941d93ec5401438b6cbf7a23
Author: Taylor Otwell <taylorotwell@users.noreply.github.com>
Date:   Sun Nov 7 21:48:21 2021 +0000

    Apply fixes from StyleCI

commit 0565d9400144bf3f03401e2dda87264cdd649bf3
Author: Sébastien Nikolaou <sebastien@stonewave.net>
Date:   Sun Nov 7 23:48:03 2021 +0200

    [9.x] Improve `Support\LazyCollection` type definitions (#39506)

    * Make LazyCollection generic

    * Remove `toBase` type test from LazyCollection

commit 5869c9d8491ddbd6ee689a9aea9f12e1663d8b35
Author: Dries Vints <dries@vints.io>
Date:   Sat Nov 6 16:21:59 2021 +0100

    Disable postgres build for now

commit 2d1fa2f371d224b6777bedfe50b30851592c7eed
Author: Dries Vints <dries@vints.io>
Date:   Sat Nov 6 16:15:10 2021 +0100

    wip

commit 1795c8c7f1dd24b8f761cf7e1bc6830505c65c4e
Author: Kennedy Tedesco <kennedyt.tw@gmail.com>
Date:   Sat Nov 6 12:11:56 2021 -0300

    [9.0] Change some strpos to str_contains (#39503)

commit fcb7acb3df64e6686acbaa8274b2df18cd1ee47c
Author: Kennedy Tedesco <kennedyt.tw@gmail.com>
Date:   Sat Nov 6 12:11:27 2021 -0300

    [9.0] Change some switch to match (#39504)

commit 7f6fb00b539ac1f52eb5392c3eca57eb6b1f015d
Author: Dries Vints <dries@vints.io>
Date:   Sat Nov 6 16:06:15 2021 +0100

    remove test

commit 417d5fc30c2595c227c93e2415674d88143566f2
Author: Dries Vints <dries@vints.io>
Date:   Sat Nov 6 15:44:41 2021 +0100

    Resolve merge conflicts

commit ef1eb4dafea06cc79c6f472a1cdedb2de02360d5
Merge: ceadf6ea6 10483fbd0
Author: Dries Vints <dries@vints.io>
Date:   Sat Nov 6 15:43:30 2021 +0100

    Merge branch '8.x'

    # Conflicts:
    #	.github/workflows/tests.yml
    #	CHANGELOG-6.x.md
    #	CHANGELOG-8.x.md
    #	composer.json
    #	src/Illuminate/Collections/Collection.php
    #	src/Illuminate/Database/Eloquent/Factories/Factory.php
    #	src/Illuminate/Database/Query/Builder.php
    #	src/Illuminate/Filesystem/FilesystemAdapter.php
    #	src/Illuminate/Foundation/Application.php
    #	src/Illuminate/Mail/composer.json
    #	src/Illuminate/Queue/composer.json
    #	src/Illuminate/Support/composer.json
    #	src/Illuminate/Validation/composer.json
    #	tests/Mail/MailSesTransportTest.php

commit ceadf6ea68c5ef316abfc618879f2cf9290e45b3
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Thu Nov 4 16:54:02 2021 +0100

    Uses `"phpstan/phpstan": "^1.0"` (#39479)

commit ec8f88bc3f84744408f24dc5c2e3b9ed0f1e9ac8
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Fri Oct 22 20:56:55 2021 +0100

    Fixes `Collection::unique` types (#39323)

commit f3aedf229f6f40e6063f170ef0b4f3bba2c2abe2
Author: Dries Vints <dries@vints.io>
Date:   Fri Oct 22 18:52:10 2021 +0200

    Add auto close for PRs to sub splits

commit 7708c10093d6a2c134cafdf279f4beaac84ebd6a
Author: Dries Vints <dries@vints.io>
Date:   Fri Oct 22 17:44:55 2021 +0200

    [9.x] Auto close pull requests on illuminate repositories (#39318)

    * Auto close pull requests on illuminate repositories

    * Update close-pull-request.yml

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit 477ca405584b449ac139d2155f082b43a95307fe
Merge: a3e7f48e3 4b785c616
Author: Dries Vints <dries@vints.io>
Date:   Fri Oct 22 14:41:12 2021 +0200

    Merge branch '8.x'

    # Conflicts:
    #	CHANGELOG-6.x.md
    #	CHANGELOG-8.x.md
    #	src/Illuminate/Collections/Traits/EnumeratesValues.php
    #	src/Illuminate/Foundation/Application.php
    #	src/Illuminate/Queue/SerializableClosureFactory.php
    #	tests/Testing/TestResponseTest.php

commit a3e7f48e3ce9a34a6840410182a3ed8f4ad03c37
Author: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com>
Date:   Thu Oct 21 15:16:16 2021 +0200

    Remove TrustHosts reliance on config helper (#39294)

commit 161098df30b3a00b917633574c48b68092ad816f
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Wed Oct 13 14:36:21 2021 +0100

    Makes HasFactory generic (#39171)

commit 40e6536edbc05733aded475f8419566bf6046946
Author: Lucas Michot <lucas@semalead.com>
Date:   Tue Oct 12 19:04:53 2021 +0200

    Do not let SetCacheHeaders override the eTag. (#39166)

commit 760d7055d13acbcba7464deb0eeabc7e903768d7
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Tue Oct 12 14:13:35 2021 +0100

    Makes database factories generic (#39169)

commit 438eba7816b6ea3531596dadd2d1cb60ef13414b
Author: mpyw <ryosuke_i_628@yahoo.co.jp>
Date:   Tue Oct 12 22:12:37 2021 +0900

    [9.x] Add `hasUser` method to Guard contract (#39167)

    * [9.x] Add `hasUser` method to Guard contract

    - https://github.com/laravel/framework/pull/24518 in this PR was added method `hasUser` to the GuardHelper trait. As for me it will be useful to have this method in the contract.

    * Update Guard.php

    Co-authored-by: Tetiana Blindaruk <t.blindaruk@gmail.com>
    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit c7278f172ecd0447f6f6ce21516bd48273d7c9b7
Author: Taylor Otwell <taylorotwell@users.noreply.github.com>
Date:   Fri Oct 8 21:10:48 2021 +0000

    Apply fixes from StyleCI

commit b25f211461c4ad75f5861205439ac8771c4d2320
Author: Jeffrey Angenent <hello@devfrey.nl>
Date:   Fri Oct 8 23:10:32 2021 +0200

    [9.x] Prevent calling count() on LazyCollection in Blade loops (#39141)

    * Prevent calling count() on LazyCollection in Blade loops

    * Update ManagesLoops.php

    Co-authored-by: Taylor Otwell <taylor@laravel.com>

commit 2232263cd2077f15c182cf9b9bc8862e95992de8
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Tue Oct 5 14:01:15 2021 +0100

    Removes `opis/closure` package (#39087)

commit ae0ef69bcc1573b4e6695bb7e560ded03eaa89ec
Author: Dries Vints <dries@vints.io>
Date:   Wed Sep 29 15:30:37 2021 +0200

    Re-enable PHP 8.1 tests

commit 45113cf4ce4f343ef94e081ce77517c7ae0497ae
Merge: d6fd27cdb 5588c7a0c
Author: Dries Vints <dries@vints.io>
Date:   Wed Sep 29 15:30:11 2021 +0200

    Merge branch '8.x'

    # Conflicts:
    #	tests/Mail/MailSesTransportTest.php

commit d6fd27cdb37b41f58135a8148e37e523f5a7c632
Author: netpok <netpok@gmail.com>
Date:   Wed Sep 29 15:10:21 2021 +0200

    Remove password rule (#39030)

commit 12d6652d297c52242fba24129ce66284f15dd0aa
Author: Dries Vints <dries@vints.io>
Date:   Wed Sep 29 14:11:16 2021 +0200

    Fail on error for now for PHP 8.1 tests

commit 4f685f021cb8c596e6a329aa57a23e3f55ff7ca6
Author: Dries Vints <dries@vints.io>
Date:   Wed Sep 29 11:34:43 2021 +0200

    Fix test

commit 42f2b9318c7c3cac477dcfa47fbb60ea671279fb
Author: Dries Vints <dries@vints.io>
Date:   Wed Sep 29 11:27:41 2021 +0200

    Re-add predis

commit f43d32a2c86d2095ec9d114f5f46757fe2a46ace
Merge: 747032bf5 43c8bff8d
Author: Dries Vints <dries@vints.io>
Date:   Wed Sep 29 11:16:52 2021 +0200

    Merge branch '8.x'

    # Conflicts:
    #	CHANGELOG-8.x.md
    #	composer.json
    #	src/Illuminate/Console/Command.php
    #	src/Illuminate/Database/PDO/SqlServerDriver.php
    #	src/Illuminate/Database/Query/Builder.php
    #	src/Illuminate/Database/composer.json
    #	src/Illuminate/Foundation/Application.php
    #	src/Illuminate/Mail/Transport/MailgunTransport.php
    #	src/Illuminate/Mail/Transport/SesTransport.php
    #	src/Illuminate/Mail/Transport/Transport.php
    #	src/Illuminate/Mail/composer.json
    #	src/Illuminate/Queue/composer.json
    #	src/Illuminate/Support/composer.json
    #	src/Illuminate/Testing/composer.json
    #	tests/Mail/MailSesTransportTest.php

commit 747032bf5d9e4f9e8205c75ec5fad48637f999c4
Author: Graham Campbell <GrahamCampbell@users.noreply.github.com>
Date:   Sun Sep 26 21:38:17 2021 +0100

    [9.x] Revert "[9.x] Update psr/log version" and fix properly (#38952)

    * Revert "[9.x] Update psr/log version (#38852)"

    This reverts commit 2b2420b501355047a43d8a11299b3b0cf79cf134.

    * Jam return types on the log methods

    * And again

commit 5ea1f918ec22a5a5778e666845545acb1b38f8c8
Author: Matej Kormuth <dobrakmato@gmail.com>
Date:   Fri Sep 24 19:56:21 2021 +0200

    Add `saveQuietly` convenience methods to relations (#38934)

commit 8d53ebe28ae8f82711f2b165db62bd7bf9b0b499
Author: Chris Morrell <inxilpro@users.noreply.github.com>
Date:   Wed Sep 22 12:50:02 2021 -0400

    [9.x] Non-breaking forwardDecoratedCallTo refactor (#38908)

commit 53ac15248368ebda4a809b08ec0f25218ee9e6d5
Author: Taylor Otwell <taylorotwell@gmail.com>
Date:   Mon Sep 20 14:52:23 2021 -0500

    add method to contract

commit fcdd3a58bfa199bf5161614dd6dc07698c606500
Author: Francisco Madeira <xico2k@gmail.com>
Date:   Mon Sep 20 15:41:28 2021 +0100

    [9.x] Only throws BroadcastException on all drivers (#38862)

    * Normalize Broadcasting Exceptions to all return BroadcastException

    * Import BroadcastException and fix typo

commit 818d7366bf2a2286e538974ffba47aa3324706d1
Author: Sjors Ottjes <sjorsottjes@gmail.com>
Date:   Mon Sep 20 16:07:26 2021 +0200

    [9.x] Add support for 4xx/5xx fallback error views (#38877)

    * add fallback 4xx/5xx error views

    * cs

commit 2b2420b501355047a43d8a11299b3b0cf79cf134
Author: Kyle <kylekatarnls@users.noreply.github.com>
Date:   Sat Sep 18 19:55:33 2021 +0200

    [9.x] Update psr/log version (#38852)

    * Update psr/log

    * Add types for LogManager

    * Update Logger typing

commit b0a0d667210cc560b709d9d4d0900ed08f571064
Merge: 097107ab5 2832ecc98
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Wed Sep 15 12:09:52 2021 +0100

    Merge pull request #38821 from canvural/patch-3

    [9.x] Fixes invalid PHPDoc syntax

commit 2832ecc98401b587b4f3a835da624d43efb7a2dd
Author: Can Vural <can9119@gmail.com>
Date:   Wed Sep 15 12:48:45 2021 +0200

    Update PHPDocs

commit 3eb951d206f6f6341bd4cac2a4db06168de2c593
Author: Can Vural <can9119@gmail.com>
Date:   Wed Sep 15 12:32:09 2021 +0200

    Fixes invalid PHPDoc syntax

commit 097107ab50ce754c709313fc75a6f1f4a9389bfc
Author: Dries Vints <dries@vints.io>
Date:   Tue Sep 14 15:57:25 2021 +0200

    [9.x] Implement Symfony Mailer (#38481)

    * Implement Symfony Mailer

    * Apply fixes from StyleCI

    * Update src/Illuminate/Mail/Message.php

    Co-authored-by: michael-rubel <contact@observer.name>

    * Update src/Illuminate/Mail/Message.php

    Co-authored-by: michael-rubel <contact@observer.name>

    * Update src/Illuminate/Mail/Message.php

    Co-authored-by: michael-rubel <contact@observer.name>

    * Update src/Illuminate/Mail/Message.php

    Co-authored-by: michael-rubel <contact@observer.name>

    * Update src/Illuminate/Mail/Message.php

    Co-authored-by: michael-rubel <contact@observer.name>

    * Update Array and Log transports

    * Apply fixes from StyleCI

    * Fix interface implementation

    * Update Mailer

    * Apply fixes from StyleCI

    * Rename

    * Remove method

    * Fix tests

    * Apply fixes from StyleCI

    * Work on Mailer tests

    * type-hint

    * Fix Mailer tests

    * Fix more tests

    * Apply fixes from StyleCI

    * Migrate Mailgun transport

    * Migrate Postmark transport

    * Replace SesTransport

    * Remove transports from dev dependencies

    * Allow setting options on esmtp transport

    * Fix Postmark transport

    * Fix embedding files

    * Clarify API transports

    * Apply fixes from StyleCI

    * Fix SES transport setup

    * Add MessageStreamId to Postmark Transport again (#38748)

    * Update symfony mailer docblocks (#38773)

    * Update docblocks from Swift Mailer to Symfony Mailer

    * Make TransportInterface more specific

    * Add Session Token to SES Transport (#38797)

    * Update src/Illuminate/Mail/Transport/ArrayTransport.php

    Co-authored-by: Julius Kiekbusch <jubeki99@gmail.com>

    * fix docblock

    * Add Wrapper for Symfony SentMessage (#38803)

    * Create SentMessage wrapper for Symfony's SentMessage

    * Wrap Symfony SentMessage

    * Update Docblocks to Illuminate\Mail\SentMessage

    * Fix sendMailable

    * Update SentMessage.php

    Co-authored-by: Dries Vints <dries@vints.io>

    Co-authored-by: Taylor Otwell <taylorotwell@users.noreply.github.com>
    Co-authored-by: michael-rubel <contact@observer.name>
    Co-authored-by: Julius Kiekbusch <jubeki99@gmail.com>
    Co-authored-by: Taylor Otwell <taylor@laravel.com>
    Co-authored-by: Taylor Otwell <taylorotwell@gmail.com>

commit 3234a8dfecbb12140e1ce980e415fcd0363f320a
Merge: 4e6e23593 7d3151c66
Author: Dries Vints <dries@vints.io>
Date:   Mon Sep 13 17:45:45 2021 +0200

    Merge branch '8.x'

commit 4e6e23593951085731600cb95cb8e3c039f4e0a3
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Thu Sep 9 15:29:14 2021 +0100

    CS fixes

commit c1b38eaf84f72ec0e8e836566df96bc01d00b6ac
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Thu Sep 9 15:17:39 2021 +0100

    CS fixes

commit 531c05181887dc53ae61ac67b759d3ea0b00bbc1
Merge: e62401b07 6a7e8e712
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Thu Sep 9 15:16:07 2021 +0100

    Merge branch '8.x'

commit e62401b07f75552baa401d52fd9ffdf62bbe7114
Merge: 016265b3c 3ab65b71b
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Thu Sep 9 14:55:38 2021 +0100

    Merge branch '8.x'

commit 016265b3ce00f93c028cc2355186d624f0d7934e
Merge: 75969f7cc cc13463eb
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Thu Sep 9 12:45:52 2021 +0100

    Merge branch '8.x'

commit 75969f7cc113a014d911c73b6a9f2e5743890c00
Author: Filip Ganyicz <ganyicz.filip@gmail.com>
Date:   Wed Sep 8 15:52:57 2021 +0200

    Add firstOr methods to relationship classes (#38694)

commit 01b7c085d75426ee6542f6c530f9aff12d7529ed
Merge: 73ac59546 44f16a31a
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Wed Sep 8 14:39:54 2021 +0100

    Merge branch '8.x'

commit 73ac59546ed326cfecba45a8674fc678b5197950
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Wed Sep 8 14:18:11 2021 +0100

    Fixed phpdoc

commit 05bba7c9b099806a9e91d715d50411c69e1bbf23
Merge: 9ee0a4b89 d73de5968
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Wed Sep 8 14:17:32 2021 +0100

    Merge branch '8.x'

commit 9ee0a4b895bc9e63823d8b67d56151b20437f56f
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Wed Sep 8 13:51:47 2021 +0100

    CS fixes

commit 60a958c95742c1c20bbb97419eb0cdf0a368eab2
Merge: b34ce627a 9e8443095
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Wed Sep 8 13:49:54 2021 +0100

    Merge branch '8.x'

commit b34ce627a4653be907ff0cd06728d529ae2f4d9a
Merge: 63052aed6 fcbccf9a7
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Wed Sep 8 13:10:13 2021 +0100

    Merge branch '8.x'

commit 63052aed61f97fdbca7933652e6634699a9ac55f
Merge: dc7563ce5 51d4755cc
Author: Dries Vints <dries@vints.io>
Date:   Tue Sep 7 16:50:59 2021 +0200

    Merge branch '8.x'

    # Conflicts:
    #	src/Illuminate/Foundation/Application.php

commit dc7563ce58c93a7b9d0a26332d902122d3844f88
Merge: bd7a519d5 beda5af89
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Mon Sep 6 22:47:40 2021 +0100

    Merge branch '8.x'

commit bd7a519d50ff4c3350b0bd42debbe54c9fa05f56
Author: Graham Campbell <GrahamCampbell@users.noreply.github.com>
Date:   Mon Sep 6 19:41:08 2021 +0100

    [9.x] Support the latest psr/container versions (#38692)

    * Support the latest psr/container versions

    * Added types

commit a3cd40a262c12b561728558c2fd0b58182cd17e9
Merge: d69e2e069 e4ec76f7d
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Mon Sep 6 19:02:48 2021 +0100

    Merge branch '8.x'

commit d69e2e06949830541d59cb916d1e0be612ba5b52
Merge: 932e601d1 e7f075f59
Author: Dries Vints <dries@vints.io>
Date:   Thu Sep 2 11:32:11 2021 +0200

    Merge branch '8.x'

    # Conflicts:
    #	CHANGELOG-8.x.md
    #	src/Illuminate/Collections/Collection.php
    #	src/Illuminate/Foundation/Application.php
    #	src/Illuminate/Testing/TestResponse.php

commit 932e601d1e8063a51cbce95136d54367d6f3ece4
Author: Jesper Noordsij <45041769+jnoordsij@users.noreply.github.com>
Date:   Fri Aug 27 16:03:39 2021 +0200

    [9.x] Allow for null handling in custom casts (#38039)

    * Pass null to custom cast set method when value is null

    * Add integration test for custom casts on Eloquent Model

    * Rename Address class to AddressCast in EloquentModelCustomCastingTest

    Prevents a duplicate naming conflict

    * Allow for proper null value handling in custom CastsAttributes implementations

    * Fix codestyle issue in EloquentModelCustomCastingTest.php

commit b1de554157cf25ec59fa81774eb687e1692357d3
Author: Nuno Maduro <enunomaduro@gmail.com>
Date:   Fri Aug 27 15:01:13 2021 +0100

    [9.x] Improves `Support\Collection` and `Database\Eloquent\Collection` type definitions (#38538)

    * Adds CI workflow

    * Adds phpstan

    * Adds work in progress regarding generic collections

    * Fixes missing template

    * Renames template

    * Updates test

    * Apply fixes from StyleCI

    * Adds work in progress regarding generic collections

    * Adds work in progress regarding generic collections

    * Adds work in progress regarding generic collections

    * Adds work in progress regarding generic collections

    * Adds work in progress regarding generic collections

    * Styling

    * Apply fixes from StyleCI

    * Apply fixes from StyleCI

    * Adds work in progress regarding generic collections

    * Remove work on Models

    * Revert "Remove work on Models"

    This reverts commit d6c42910a032f1647f07d42dc800d8be22a77963.

    * Removes `prefer-lowest`

    * Removes non needed code on CI job

    Co-authored-by: Dries Vints <dries@vints.io>

    * Fixes `Eloquent\Collection::load` types

    * Adds work in progress regarding generic collections

    * Fixes `Eloquent\Collection::load` related methods

    Co-authored-by: Taylor Otwell <taylorotwell@users.noreply.github.com>
    Co-authored-by: Dries Vints <dries@vints.io>

commit 81527e7c2cf212f5e9a2616ef5b5c5debddf3bcf
Author: Dries Vints <dries@vints.io>
Date:   Thu Aug 26 17:38:26 2021 +0200

    bump

commit 89b68c784e8f29b7367f71c3080d1f2ed0d61c18
Author: Dries Vints <dries@vints.io>
Date:   Thu Aug 26 17:23:29 2021 +0200

    Update constraint

commit 14c2b252f28df7072a096786163bfe2e9e0587f5
Author: Andrew Brown <browner12@gmail.com>
Date:   Tue Aug 24 14:33:04 2021 -0500

    minor grammar fix (#38529)

commit da9116ba1b3f3303a2b43d973a011975eeba3b00
Author: Antonio Pauletich <antonio.pauletich95@gmail.com>
Date:   Tue Aug 24 21:18:28 2021 +0200

    [9.x] Adjust PHP 8 and Symfony 6 constraints in all composer.json files (#38526)

    * Adjust missed places for the PHP 8 and Symfony 6 upgrade

    * Update PHP version to be in sync with the Symfony 6 min PHP version

    * Update PHP constraint

commit 792e42caab685c20d137ce906a2f26e03ed66280
Author: Chris Morrell <inxilpro@users.noreply.github.com>
Date:   Tue Aug 24 09:06:17 2021 -0400

    [9.x] Split Conditionable into package (#38457)

    * [9.x] Split Conditionable into package

    * Fix issue with 8.x merge

commit 908c4e4299bced9633192598b1944b1bf980bacd
Merge: 078ae5c10 30e1fd3ab
Author: Dries Vints <dries@vints.io>
Date:   Mon Aug 23 10:58:13 2021 +0200

    Merge branch '8.x'

commit 078ae5c1037c2c1cc8974eeb8dfc7dba7b74d9c1
Author: Dries Vints <dries@vints.io>
Date:   Mon Aug 23 10:56:05 2021 +0200

    Update namespaces in docblocks

commit 081f467ade3cea2edf7d581e20a3772c882029f5
Author: Chrysanthos <48060191+chrysanthos@users.noreply.github.com>
Date:   Fri Aug 20 16:50:23 2021 +0300

    Dump specific key of the response (#38468)

commit 1f07d753ea08234e53837c181c2c500eaa6eac42
Author: Saya <chu121su12@gmail.com>
Date:   Fri Aug 20 21:02:06 2021 +0800

    [9.x] Lazy load queue commands (#38479)

    * use class name for command registration

    * assign defaultName for lazy loading

commit 67f0a128869856cc9c4c25f21285a4e44d8ba277
Merge: f409e0433 1a2ecc9ed
Author: Dries Vints <dries@vints.io>
Date:   Fri Aug 20 11:34:00 2021 +0200

    Merge branch '8.x'

commit f409e0433fd1d9186dc6dfb32e277adb74e96fdc
Author: Saya <chu121su12@gmail.com>
Date:   Fri Aug 20 17:25:10 2021 +0800

    Update firstOrFail logic (#38470)

commit c95392a2ac84313a3296485f7141b6ae8bac5413
Author: Derek MacDonald <derekmd@hotmail.com>
Date:   Thu Aug 19 12:13:15 2021 -0400

    DB queries containing JSON paths support array index references (#38391)

    e.g.,

    DB::table('owner')
        ->where('packages[1]->name', 'laravel/framework')
        ->update(['packages[1]->versions[0]' => '9.0.0']);

    Stop compiling:

    UPDATE `owner`
    SET `packages` = JSON_SET(`packages`, $"[1]"."versions[0]", '9.0.0')
    WHERE json_unquote(json_extract(`packages[1]`, '$."name"')) = 'laravel/framework';
    ...

    Instead avoid escaping array dereference characters:

    UPDATE `owner`
    SET `framework` = JSON_SET(`framework`, $[1]."versions"[0], '9.0.0')
    WHERE json_unquote(json_extract(`packages[1]`, '$."name"')) = 'laravel/framework';

commit 93883aebc56ae52cb5be48baeb97ba0e8662201b
Merge: edbbcdbbd 5d5655b48
Author: Dries Vints <dries@vints.io>
Date:   Thu Aug 19 17:27:12 2021 +0200

    Merge branch '8.x'

    # Conflicts:
    #	CHANGELOG-6.x.md
    #	CHANGELOG-8.x.md
    #	src/Illuminate/Foundation/Application.php

commit edbbcdbbda1ba17e1ae7c210dfb10f67a89da84f
Author: Derek MacDonald <derekmd@hotmail.com>
Date:   Tue Aug 17 09:11:32 2021 -0400

    Make Application@handle() meet Symfony 6's updated interface (#38413)

    Add return type. This is a great use of our time.

commit 585b6042f6ca75baa2eb63cecfb0a3ada49140e9
Author: Dries Vints <dries@vints.io>
Date:   Mon Aug 16 19:53:36 2021 +0200

    [9.x] Fix Symfony v6 breaking changes (#38376)

    * Fix type errors

    * Fix session handling

    * Update getSession usages

commit cdf73f2ceb181649ed4b01d0cc075520049d2a74
Merge: d5c054b94 4caba8bfd
Author: Dries Vints <dries@vints.io>
Date:   Mon Aug 16 16:49:33 2021 +0200

    Merge branch '8.x'

commit d5c054b940999c24ee403d6daf62e1497704b855
Merge: 128614b9b f95f3afc7
Author: Dries Vints <dries@vints.io>
Date:   Mon Aug 16 14:10:59 2021 +0200

    Merge branch '8.x'

commit 128614b9bb952ad680987117f1e40c2de3230bec
Merge: 2c3c533be 8cbdf8fa6
Author: Graham Campbell <hello@gjcampbell.co.uk>
Date:   Sat Aug 14 17:49:24 2021 +0100

    Merge branch '8.x'

commit 2c3c533be508fff3f3b573be395ef9cef80a0520
Merge: 34771cbf9 3591526d8
Author: Dries Vints <dries@vints.io>
Date:   Fri Aug 13 18:27:22 2021 +0200

    Merge branch '8.x'

commit 34771cbf9324ac1b10ad91ce82422a7a22341a14
Author: Mark Beech <mbeech@mark-beech.co.uk>
Date:   Fri Aug 13 14:16:21 2021 +0100

    BelongsToMany firstOrCreate and firstOrNew should merge attributes correctly (#38367)

commit 8defbc6564649d1f2f11ec10a1a88c12f832d8d3
Author: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com>
Date:   Thu Aug 12 19:12:34 2021 +0200

    Make BuildsQueries::tap consistent with other versions of tap (#38359)

commit 94c1b8a72250b07d4a16233f545f1ec8bc195f9a
Author: Dries Vints <dries@vints.io>
Date:   Thu Aug 12 15:05:18 2021 +0200

    Fix incorrect type

commit 3a8888ccc5e3cd396f7ab4e19e54df5f3a337f27
Merge: 0ec3e78e8 b0eca3869
Author: Dries Vints <dries@vints.io>
Date:   Thu Aug 12 14:53:40 2021 +0200

    Merge branch '8.x'

    # Conflicts:
    #	composer.json
    #	src/Illuminate/Foundation/Application.php
    #	src/Illuminate/Mail/composer.json
    #	src/Illuminate/Queue/composer.json

commit 0ec3e78e85d44da1c6784f403dc1d8db0e4604f2
Author: Michael Dyrynda <michael@dyrynda.com.au>
Date:   Tue Aug 10 23:43:43 2021 +0930

    [9.x] Use CarbonImmutable by default (#38258)

    * Ensure that Illuminate\Support\Carbon is used consistently across the framework

    * Update tests to support immutable dates by default

    * Update date calls to support immutable-first behaviour

    * cs fixes

    * Per PR review, revert to using Carbon by default

commit 13e4a7ff1799ee51698faa10161b2d2af889b713
Author: Luke Towers <github@luketowers.ca>
Date:   Mon Aug 9 07:46:19 2021 -0600

    [9.x] Manually populate POST request body with JSON data only when required (#37921)

    * Manually populate POST request body with JSON data only when required

    This fixes a 6 year old bug introduced in #7026 where GET requests would have GET data populated in the POST body property leading to issues around Request::post() and $request->getParsedBody()…
@stevebauman
Copy link
Contributor Author

stevebauman commented Jan 19, 2022

Sorry @taylorotwell -- I previously changed the PR base from 8.x to 9.x by simply selecting it in GitHub. I've just now rebased this PR branch to 9.x. Can you give it another shot?

@taylorotwell
Copy link
Member

That messed it up further. Can you undo that? It was actually fine before.

@stevebauman
Copy link
Contributor Author

Whoops -- okay I messed this PR up moving from branch to branch. Going to close this and re push this from scratch, my bad! 😅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants