From 11767741c09010938365cf64a826ea18c357712f Mon Sep 17 00:00:00 2001 From: Lex de Willigen Date: Sat, 21 Jan 2023 10:39:30 +0100 Subject: [PATCH 01/10] Add support for Laravel 9 & 10 --- .gitignore | 4 +++- composer.json | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index a168d1b..49b3443 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ .idea vendor .phpunit.result.cache -.php_cs.cache \ No newline at end of file +.php_cs.cache +composer.lock +coverage \ No newline at end of file diff --git a/composer.json b/composer.json index a07f883..5669264 100644 --- a/composer.json +++ b/composer.json @@ -2,8 +2,8 @@ "name" : "agilepixels/laravel-resource-abilities", "description" : "Add abilities to Laravel API resources", "keywords" : [ - "agilepixels", - "laravel-resource-abilities" + "laravel", + "php" ], "homepage" : "https://github.com/agilepixels/laravel-resource-abilities", "license" : "MIT", @@ -17,8 +17,8 @@ ], "require" : { "php" : "^8.0", - "illuminate/database" : "~5.8.0|^6.0|^7.0|^8.0", - "illuminate/routing" : "~5.8.0|^6.0|^7.0|^8.0" + "illuminate/database" : "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/routing" : "^6.0|^7.0|^8.0|^9.0|^10.0" }, "require-dev" : { "orchestra/testbench" : "~3.8.0|^4.0|^5.0|^6.0", From 182de956cceb803e8a03694b57235879c4b9d130 Mon Sep 17 00:00:00 2001 From: Lex de Willigen Date: Sat, 21 Jan 2023 10:42:29 +0100 Subject: [PATCH 02/10] Rename CS Fixer file --- .php_cs.dist => .php-cs-fixer.dist.php | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .php_cs.dist => .php-cs-fixer.dist.php (100%) diff --git a/.php_cs.dist b/.php-cs-fixer.dist.php similarity index 100% rename from .php_cs.dist rename to .php-cs-fixer.dist.php From 4f9494d486a6829f8280717bbfb02f30024b190e Mon Sep 17 00:00:00 2001 From: Lex de Willigen Date: Sat, 21 Jan 2023 10:46:42 +0100 Subject: [PATCH 03/10] Fix CI --- .github/workflows/style.yml | 2 +- .github/workflows/test.yml | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml index f0b1fc0..e833093 100644 --- a/.github/workflows/style.yml +++ b/.github/workflows/style.yml @@ -15,7 +15,7 @@ jobs: - name: Run PHP CS Fixer uses: docker://oskarstark/php-cs-fixer-ga with: - args: --config=.php_cs.dist --allow-risky=yes + args: --config=.php-cs-fixer.dist.php --allow-risky=yes - name: Commit changes uses: stefanzweifel/git-auto-commit-action@v4 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1b1da54..1ab6c4b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,9 +10,13 @@ jobs: matrix: os: [ubuntu-latest] php: [8.0] - laravel: [6.*, 7.*, 8.*] + laravel: [6.*, 7.*, 8.*, 9.*, 10.*] dependency-version: [prefer-lowest, prefer-stable] include: + - laravel: 10.* + testbench: 7.* + - laravel: 9.* + testbench: 7.* - laravel: 8.* testbench: 6.* - laravel: 7.* From a22d50389d66aacbf41e9c698353a87e11b4ce94 Mon Sep 17 00:00:00 2001 From: Lex de Willigen Date: Sat, 21 Jan 2023 11:01:31 +0100 Subject: [PATCH 04/10] Support Laravel 9 --- .github/workflows/test.yml | 10 ++-------- composer.json | 6 +++--- src/AbilityTypes/PolicyAbilityType.php | 5 +++++ 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1ab6c4b..f3d4ced 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,20 +9,14 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - php: [8.0] - laravel: [6.*, 7.*, 8.*, 9.*, 10.*] + php: [8.2, 8.1, 8.0] + laravel: [9.*, 10.*] dependency-version: [prefer-lowest, prefer-stable] include: - laravel: 10.* testbench: 7.* - laravel: 9.* testbench: 7.* - - laravel: 8.* - testbench: 6.* - - laravel: 7.* - testbench: 5.* - - laravel: 6.* - testbench: 4.* name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }} - ${{ matrix.os }} diff --git a/composer.json b/composer.json index 5669264..6ca6546 100644 --- a/composer.json +++ b/composer.json @@ -17,11 +17,11 @@ ], "require" : { "php" : "^8.0", - "illuminate/database" : "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/routing" : "^6.0|^7.0|^8.0|^9.0|^10.0" + "illuminate/database" : "^9.0|^10.0", + "illuminate/routing" : "^9.0|^10.0" }, "require-dev" : { - "orchestra/testbench" : "~3.8.0|^4.0|^5.0|^6.0", + "orchestra/testbench" : "^7.0", "phpunit/phpunit" : "^8.0|^9.0" }, "autoload" : { diff --git a/src/AbilityTypes/PolicyAbilityType.php b/src/AbilityTypes/PolicyAbilityType.php index e3e910d..3bacc39 100644 --- a/src/AbilityTypes/PolicyAbilityType.php +++ b/src/AbilityTypes/PolicyAbilityType.php @@ -34,6 +34,11 @@ public function getAbilities(array $abilities, bool $withAllAbilities): array { return collect($this->abilities) + /** + * Filter out helper methods + */ + ->reject(fn (string $ability) => in_array($ability, ['denyWithStatus', 'denyAsNotFound'])) + /** * Filter out the non-specified abilities */ From 110caf736cab77ba3d45e763fc72a2c18c693e2d Mon Sep 17 00:00:00 2001 From: Lex de Willigen Date: Sat, 21 Jan 2023 11:04:04 +0100 Subject: [PATCH 05/10] Don't support Laravel 10 yet --- .github/workflows/test.yml | 4 +--- composer.json | 6 +++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f3d4ced..632ecb8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,11 +10,9 @@ jobs: matrix: os: [ubuntu-latest] php: [8.2, 8.1, 8.0] - laravel: [9.*, 10.*] + laravel: [9.*] dependency-version: [prefer-lowest, prefer-stable] include: - - laravel: 10.* - testbench: 7.* - laravel: 9.* testbench: 7.* diff --git a/composer.json b/composer.json index 6ca6546..e633316 100644 --- a/composer.json +++ b/composer.json @@ -16,9 +16,9 @@ } ], "require" : { - "php" : "^8.0", - "illuminate/database" : "^9.0|^10.0", - "illuminate/routing" : "^9.0|^10.0" + "php" : "^8.0|^8.1|^8.2", + "illuminate/database" : "^9.0", + "illuminate/routing" : "^9.0" }, "require-dev" : { "orchestra/testbench" : "^7.0", From 99fc5ce03ee9de7849ab525a266479d95d87023b Mon Sep 17 00:00:00 2001 From: Lex de Willigen Date: Sat, 21 Jan 2023 11:06:35 +0100 Subject: [PATCH 06/10] Fix style CI --- .github/workflows/style.yml | 2 +- .php-cs-fixer.dist.php => .php_cs.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename .php-cs-fixer.dist.php => .php_cs.php (97%) diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml index e833093..ebf347f 100644 --- a/.github/workflows/style.yml +++ b/.github/workflows/style.yml @@ -15,7 +15,7 @@ jobs: - name: Run PHP CS Fixer uses: docker://oskarstark/php-cs-fixer-ga with: - args: --config=.php-cs-fixer.dist.php --allow-risky=yes + args: --config=.php_cs.php --allow-risky=yes - name: Commit changes uses: stefanzweifel/git-auto-commit-action@v4 diff --git a/.php-cs-fixer.dist.php b/.php_cs.php similarity index 97% rename from .php-cs-fixer.dist.php rename to .php_cs.php index 83773ef..364e296 100644 --- a/.php-cs-fixer.dist.php +++ b/.php_cs.php @@ -13,7 +13,7 @@ ->ignoreDotFiles(true) ->ignoreVCS(true); -return PhpCsFixer\Config::create() +return (new PhpCsFixer\Config()) ->setRules([ '@PSR2' => true, 'array_syntax' => ['syntax' => 'short'], From a7e2e8cd5c2ed47de71175d72254c0ca81396e0a Mon Sep 17 00:00:00 2001 From: Lex de Willigen Date: Sat, 21 Jan 2023 11:08:00 +0100 Subject: [PATCH 07/10] Fix CI --- .php_cs.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.php_cs.php b/.php_cs.php index 364e296..da07329 100644 --- a/.php_cs.php +++ b/.php_cs.php @@ -15,12 +15,12 @@ return (new PhpCsFixer\Config()) ->setRules([ - '@PSR2' => true, + '@PSR12' => true, 'array_syntax' => ['syntax' => 'short'], - 'ordered_imports' => ['sortAlgorithm' => 'alpha'], + 'ordered_imports' => ['sort_algorithm' => 'alpha'], 'no_unused_imports' => true, 'not_operator_with_successor_space' => true, - 'trailing_comma_in_multiline_array' => true, + 'trailing_comma_in_multiline' => true, 'phpdoc_scalar' => true, 'unary_operator_spaces' => true, 'binary_operator_spaces' => true, @@ -32,6 +32,7 @@ 'method_argument_space' => [ 'on_multiline' => 'ensure_fully_multiline', 'keep_multiple_spaces_after_comma' => true, - ] + ], + 'single_trait_insert_per_statement' => true, ]) ->setFinder($finder); \ No newline at end of file From 8b59a0d949feb5e307be2894cf9b9e497eb40f74 Mon Sep 17 00:00:00 2001 From: lexdewilligen Date: Sat, 21 Jan 2023 10:08:26 +0000 Subject: [PATCH 08/10] Fix styling --- .php-cs-fixer.cache | 1 + src/AbilityTypes/AbilityType.php | 3 +- src/AbilityTypes/GateAbilityType.php | 2 +- src/Builder.php | 1 - src/Collection.php | 1 - tests/Fakes/UserResource.php | 3 +- tests/HasRelationshipsTest.php | 20 +++++---- tests/JsonResource/ProcessesAbilitiesTest.php | 44 +++++++++---------- .../ProcessesAbilitiesTest.php | 20 ++++----- 9 files changed, 49 insertions(+), 46 deletions(-) create mode 100644 .php-cs-fixer.cache diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache new file mode 100644 index 0000000..234030a --- /dev/null +++ b/.php-cs-fixer.cache @@ -0,0 +1 @@ +{"php":"8.1.14","version":"3.13.2","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"blank_line_between_import_groups":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"sort_algorithm":"alpha"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_import_per_statement":{"group_to_single_imports":false},"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true},"hashes":{"src\/JsonResource\/ProcessesAbilities.php":"a7f5a7ed93f665bcba126c81fd4ee420","src\/AbilityTypes\/AbilityType.php":"d68c4cc404b58acb04148f615ec56cff","src\/AbilityTypes\/PolicyAbilityType.php":"dde374933e7b7b3010353210581160c8","src\/AbilityTypes\/GateAbilityType.php":"933ec9c44d9905a96d17f40ad4286ccd","src\/Collection.php":"4dcf687ee87e34912bfc9fb1b9bf3a7d","src\/ResourceAbilitiesServiceProvider.php":"6b1c845150613572afee5a5e663b966d","src\/ResourceResponse.php":"f104c0fffd16704ced90899098e11188","src\/Serializers\/AbilitySerializer.php":"0ee30e725e8cba885188f39a633bbac7","src\/Serializers\/ExtendedAbilitySerializer.php":"e913736a153c7766a1407c7fc44fbff6","src\/Serializers\/Serializer.php":"d4907147f8ceccc34944b3b304b92c29","src\/AbilityResource.php":"b092ded9f3a5c2ab0e5b2da71c444831","src\/AnonymousResourceCollection.php":"221c9040d13425303c0b15b157cffbbc","src\/ResourceCollection\/ProcessesAbilities.php":"fe3c750969ebe3e898ba7db470a139e4","src\/AbilityContainer.php":"14d5cd11795fdf67afb3ebf6be11d625","src\/AddsAbilities.php":"4dd669fbee4fef80320ae8ab5816aaf8","src\/ResourceCollection.php":"08bf43316d6e7a60f50d27c1e3a95d3d","src\/PaginatedResourceResponse.php":"3b7821ede536518a31f369ed1c069fce","src\/Abilities.php":"28f58c7abef530ca763d6cf668caf035","src\/HasAbilities.php":"da603c648553d10f72080a7bcb02d7dc","src\/HasRelationships.php":"91ee9b616231450a0d5028a766ffc3e7","src\/Builder.php":"fc6dfbd7a4a7dcf96507bae498e3bd7a","tests\/JsonResource\/ProcessesAbilitiesTest.php":"7b79b94e44e5ead74bea69347e88deeb","tests\/TestCase.php":"4dd03fa66427781817e9e881c27a24a9","tests\/AbilitiesTest.php":"467716785e5e01bfe4ca9a8844a5513a","tests\/HasRelationshipsTest.php":"4aa4f5ed630c6ed62089970dc79aa54b","tests\/AddsAbilitiesTest.php":"b47923042fdaa96a95d08f52c560fb2a","tests\/ResourceCollection\/ProcessesAbilitiesTest.php":"f113643d1a056c6540b4a3455b2f5615","tests\/Fakes\/TestModel.php":"31b797dacad09f536e4320d0ee3d8bd6","tests\/Fakes\/UserResource.php":"1929f3e551f9d34689fb42471bf71072","tests\/Fakes\/TestPolicy.php":"0768989e8bcb7248211a99d9a2b7ea18","tests\/Fakes\/User.php":"5bd8a671a98e5191a5a3fec210e44e83","tests\/Fakes\/TestRouter.php":"9347bd9e3339bef81d927b2e8c45f112","tests\/HasAbilitiesTest.php":"80e1edde79b990f4439965f0ec63ccaf","tests\/CollectionTest.php":"2d8821e04b6a39a0bbf26261249980af"}} \ No newline at end of file diff --git a/src/AbilityTypes/AbilityType.php b/src/AbilityTypes/AbilityType.php index 487f408..8f7deea 100644 --- a/src/AbilityTypes/AbilityType.php +++ b/src/AbilityTypes/AbilityType.php @@ -4,7 +4,6 @@ use AgilePixels\ResourceAbilities\Serializers\Serializer; use Illuminate\Database\Eloquent\Model; -use Illuminate\Support\Arr; abstract class AbilityType { @@ -52,7 +51,7 @@ protected function resolveSerializer(): Serializer ? config('resource-abilities.serializer') : $this->serializer; - return new $serializer; + return new $serializer(); } /** diff --git a/src/AbilityTypes/GateAbilityType.php b/src/AbilityTypes/GateAbilityType.php index 5f8647a..60138b6 100644 --- a/src/AbilityTypes/GateAbilityType.php +++ b/src/AbilityTypes/GateAbilityType.php @@ -23,7 +23,7 @@ public static function make(string $ability, Model | string $model): GateAbility public function getAbilities(array $abilities, bool $withAllAbilities): array { - if (!in_array($this->ability, $abilities, true) && ! $withAllAbilities) { + if (! in_array($this->ability, $abilities, true) && ! $withAllAbilities) { return []; } diff --git a/src/Builder.php b/src/Builder.php index bd4a349..607fa2a 100644 --- a/src/Builder.php +++ b/src/Builder.php @@ -1,6 +1,5 @@ testResource = new class(null) extends JsonResource { + $this->testResource = new class (null) extends JsonResource { use ProcessesAbilities; public function toArray($request) @@ -46,7 +46,7 @@ public function it_will_generate_abilities() { $collection = TestModel::query()->get(); - $this->router->get('/resources', fn () => new class($collection) extends ResourceCollection { + $this->router->get('/resources', fn () => new class ($collection) extends ResourceCollection { use ProcessesAbilities; public function toArray($request) @@ -75,7 +75,7 @@ public function it_will_check_policy_abilities() ->checkAbility('viewAny') ->checkAbility('create'); - $this->router->get('/resources', fn () => new class($collection) extends ResourceCollection { + $this->router->get('/resources', fn () => new class ($collection) extends ResourceCollection { use ProcessesAbilities; public function toArray($request) @@ -101,7 +101,7 @@ public function it_will_check_gate_abilities() { $collection = TestModel::query()->get(); - $this->router->get('/resources', fn () => new class($collection) extends ResourceCollection { + $this->router->get('/resources', fn () => new class ($collection) extends ResourceCollection { use ProcessesAbilities; public function toArray($request) @@ -126,7 +126,7 @@ public function it_will_check_multiple_gate_abilities() { $collection = TestModel::query()->get(); - $this->router->get('/resources', fn () => new class($collection) extends ResourceCollection { + $this->router->get('/resources', fn () => new class ($collection) extends ResourceCollection { use ProcessesAbilities; public function toArray($request) @@ -152,7 +152,7 @@ public function it_will_check_only_policy_abilities_without_models() { $collection = TestModel::query()->get(); - $this->router->get('/resources', fn () => new class($collection) extends ResourceCollection { + $this->router->get('/resources', fn () => new class ($collection) extends ResourceCollection { use ProcessesAbilities; public function toArray($request) @@ -178,7 +178,7 @@ public function it_will_pass_parameters_when_checking_gates() { $collection = TestModel::query()->get(); - $this->router->get('/resources', fn () => new class($collection) extends ResourceCollection { + $this->router->get('/resources', fn () => new class ($collection) extends ResourceCollection { use ProcessesAbilities; public function toArray($request) @@ -203,7 +203,7 @@ public function it_will_pass_parameters_when_checking_policies() { $collection = TestModel::query()->get(); - $this->router->get('/resources', fn () => new class($collection) extends ResourceCollection { + $this->router->get('/resources', fn () => new class ($collection) extends ResourceCollection { use ProcessesAbilities; public function toArray($request) @@ -229,7 +229,7 @@ public function it_will_use_serializer_when_checking_policies() { $collection = TestModel::query()->get(); - $this->router->get('/resources', fn () => new class($collection) extends ResourceCollection { + $this->router->get('/resources', fn () => new class ($collection) extends ResourceCollection { use ProcessesAbilities; public function toArray($request) @@ -261,7 +261,7 @@ public function it_will_use_serializer_when_checking_gates() { $collection = TestModel::query()->get(); - $this->router->get('/resources', fn () => new class($collection) extends ResourceCollection { + $this->router->get('/resources', fn () => new class ($collection) extends ResourceCollection { use ProcessesAbilities; public function toArray($request) From 23678b5892dc9ee8728de527ec4f313c2a3ec65f Mon Sep 17 00:00:00 2001 From: Lex de Willigen Date: Sat, 21 Jan 2023 11:14:50 +0100 Subject: [PATCH 09/10] Remove lowest --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 632ecb8..8b55eb5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,7 +11,7 @@ jobs: os: [ubuntu-latest] php: [8.2, 8.1, 8.0] laravel: [9.*] - dependency-version: [prefer-lowest, prefer-stable] + dependency-version: [prefer-stable] include: - laravel: 9.* testbench: 7.* From 6af4c13aea1873b5d326007688339a435c7e444f Mon Sep 17 00:00:00 2001 From: Lex de Willigen Date: Sat, 21 Jan 2023 11:16:24 +0100 Subject: [PATCH 10/10] Remove cs fixer cache --- .gitignore | 2 +- .php-cs-fixer.cache | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 .php-cs-fixer.cache diff --git a/.gitignore b/.gitignore index 49b3443..b639f04 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ .idea vendor .phpunit.result.cache -.php_cs.cache +.php-cs-fixer.cache composer.lock coverage \ No newline at end of file diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache deleted file mode 100644 index 234030a..0000000 --- a/.php-cs-fixer.cache +++ /dev/null @@ -1 +0,0 @@ -{"php":"8.1.14","version":"3.13.2","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"blank_line_between_import_groups":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"sort_algorithm":"alpha"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_import_per_statement":{"group_to_single_imports":false},"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true},"hashes":{"src\/JsonResource\/ProcessesAbilities.php":"a7f5a7ed93f665bcba126c81fd4ee420","src\/AbilityTypes\/AbilityType.php":"d68c4cc404b58acb04148f615ec56cff","src\/AbilityTypes\/PolicyAbilityType.php":"dde374933e7b7b3010353210581160c8","src\/AbilityTypes\/GateAbilityType.php":"933ec9c44d9905a96d17f40ad4286ccd","src\/Collection.php":"4dcf687ee87e34912bfc9fb1b9bf3a7d","src\/ResourceAbilitiesServiceProvider.php":"6b1c845150613572afee5a5e663b966d","src\/ResourceResponse.php":"f104c0fffd16704ced90899098e11188","src\/Serializers\/AbilitySerializer.php":"0ee30e725e8cba885188f39a633bbac7","src\/Serializers\/ExtendedAbilitySerializer.php":"e913736a153c7766a1407c7fc44fbff6","src\/Serializers\/Serializer.php":"d4907147f8ceccc34944b3b304b92c29","src\/AbilityResource.php":"b092ded9f3a5c2ab0e5b2da71c444831","src\/AnonymousResourceCollection.php":"221c9040d13425303c0b15b157cffbbc","src\/ResourceCollection\/ProcessesAbilities.php":"fe3c750969ebe3e898ba7db470a139e4","src\/AbilityContainer.php":"14d5cd11795fdf67afb3ebf6be11d625","src\/AddsAbilities.php":"4dd669fbee4fef80320ae8ab5816aaf8","src\/ResourceCollection.php":"08bf43316d6e7a60f50d27c1e3a95d3d","src\/PaginatedResourceResponse.php":"3b7821ede536518a31f369ed1c069fce","src\/Abilities.php":"28f58c7abef530ca763d6cf668caf035","src\/HasAbilities.php":"da603c648553d10f72080a7bcb02d7dc","src\/HasRelationships.php":"91ee9b616231450a0d5028a766ffc3e7","src\/Builder.php":"fc6dfbd7a4a7dcf96507bae498e3bd7a","tests\/JsonResource\/ProcessesAbilitiesTest.php":"7b79b94e44e5ead74bea69347e88deeb","tests\/TestCase.php":"4dd03fa66427781817e9e881c27a24a9","tests\/AbilitiesTest.php":"467716785e5e01bfe4ca9a8844a5513a","tests\/HasRelationshipsTest.php":"4aa4f5ed630c6ed62089970dc79aa54b","tests\/AddsAbilitiesTest.php":"b47923042fdaa96a95d08f52c560fb2a","tests\/ResourceCollection\/ProcessesAbilitiesTest.php":"f113643d1a056c6540b4a3455b2f5615","tests\/Fakes\/TestModel.php":"31b797dacad09f536e4320d0ee3d8bd6","tests\/Fakes\/UserResource.php":"1929f3e551f9d34689fb42471bf71072","tests\/Fakes\/TestPolicy.php":"0768989e8bcb7248211a99d9a2b7ea18","tests\/Fakes\/User.php":"5bd8a671a98e5191a5a3fec210e44e83","tests\/Fakes\/TestRouter.php":"9347bd9e3339bef81d927b2e8c45f112","tests\/HasAbilitiesTest.php":"80e1edde79b990f4439965f0ec63ccaf","tests\/CollectionTest.php":"2d8821e04b6a39a0bbf26261249980af"}} \ No newline at end of file