2323use Illuminate \Support \Arr ;
2424use Illuminate \Support \Facades \Config ;
2525use Illuminate \Support \Traits \Macroable ;
26- use League \Fractal \Pagination \Cursor ;
27- use League \Fractal \Pagination \IlluminatePaginatorAdapter ;
28- use League \Fractal \Serializer \ArraySerializer ;
29- use League \Fractal \Serializer \DataArraySerializer ;
30- use Spatie \Fractal \Fractal ;
3126
3227class Format
3328{
@@ -82,52 +77,39 @@ public function data($data, ?string $message, int $code, $errors = null): array
8277 * Format paginator data.
8378 *
8479 * @param AbstractPaginator|AbstractCursorPaginator $resource
85- * @param null $transformer
86- * @param null $resourceName
8780 * @return array
8881 */
89- public function paginator (AbstractPaginator |AbstractCursorPaginator $ resource, $ transformer = null , $ resourceName = null ): array
82+ public function paginator (AbstractPaginator |AbstractCursorPaginator $ resource ): array
9083 {
91- $ fractal = fractal ()
92- ->collection ($ resource , $ transformer ?: fn ($ item ) => $ item ->toArray (), $ resourceName )
93- ->serializeWith (DataArraySerializer::class);
94-
95- return tap ($ fractal , $ this ->formatCollection ($ resource ))->toArray ();
84+ return [
85+ 'data ' => $ resource ->toArray ()['data ' ],
86+ 'meta ' => $ this ->formatMeta ($ resource )
87+ ];
9688 }
9789
9890 /**
9991 * Format collection resource data.
10092 *
10193 * @param ResourceCollection $collection
102- * @param null $transformer
103- * @param null $resourceName
10494 * @return array
10595 */
106- public function resourceCollection (ResourceCollection $ collection, $ transformer = null , $ resourceName = null ): array
96+ public function resourceCollection (ResourceCollection $ collection ): array
10797 {
108- $ fractal = fractal ()
109- ->collection ($ collection ->resource , $ transformer ?: $ this ->formatJsonResource (), $ resourceName )
110- ->serializeWith (DataArraySerializer::class);
111-
112- return tap ($ fractal , $ this ->formatCollection ($ collection ->resource ))->toArray ();
98+ return array_filter ([
99+ 'data ' => $ collection ->toArray (request ()),
100+ 'meta ' => $ this ->formatMeta ($ collection ->resource )
101+ ]);
113102 }
114103
115104 /**
116105 * Format JsonResource Data.
117106 *
118107 * @param JsonResource $resource
119- * @param null $transformer
120- * @param null $resourceName
121108 * @return array
122109 */
123- public function jsonResource (JsonResource $ resource, $ transformer = null , $ resourceName = null ): array
110+ public function jsonResource (JsonResource $ resource ): array
124111 {
125- $ data = value ($ this ->formatJsonResource (), $ resource );
126-
127- return fractal ()
128- ->item ($ data , $ transformer ?: fn () => $ data , $ resourceName )
129- ->serializeWith (ArraySerializer::class)
130- ->toArray ();
112+ return value ($ this ->formatJsonResource (),$ resource );
131113 }
132114
133115 /**
@@ -139,7 +121,7 @@ public function jsonResource(JsonResource $resource, $transformer = null, $resou
139121 */
140122 protected function formatMessage (int $ code , ?string $ message ): ?string
141123 {
142- if (! $ message && class_exists ($ enumClass = Config::get ('response.enum ' ))) {
124+ if (!$ message && class_exists ($ enumClass = Config::get ('response.enum ' ))) {
143125 $ message = $ enumClass ::fromValue ($ code )->description ;
144126 }
145127
@@ -182,6 +164,8 @@ protected function formatStatusCode($code, string $from = 'success'): int
182164 */
183165 protected function formatJsonResource (): \Closure
184166 {
167+ // vendor/laravel/framework/src/Illuminate/Http/Resources/Json/ResourceResponse.php
168+ // toResponse
185169 return function (JsonResource $ resource ) {
186170 return array_merge_recursive ($ resource ->resolve (request ()), $ resource ->with (request ()), $ resource ->additional );
187171 };
@@ -191,32 +175,43 @@ protected function formatJsonResource(): \Closure
191175 * Format paginator data.
192176 *
193177 * @param $collection
194- * @return \Closure
195178 */
196- protected function formatCollection ($ collection ): \ Closure
179+ protected function formatMeta ($ collection )
197180 {
198- return function (Fractal $ item ) use ($ collection ) {
199- return match (true ) {
200- $ collection instanceof CursorPaginator => $ item ->withCursor (new Cursor (
201- $ collection ->cursor ()?->encode(),
202- $ collection ->previousCursor ()?->encode(),
203- $ collection ->nextCursor ()?->encode(),
204- count ($ collection ->items ())
205- )),
206- $ collection instanceof LengthAwarePaginator => $ item ->paginateWith (new IlluminatePaginatorAdapter ($ collection )),
207- $ collection instanceof Paginator => $ item ->addMeta ([
208- 'pagination ' => [
209- 'count ' => $ collection ->lastItem (),
210- 'per_page ' => $ collection ->perPage (),
211- 'current_page ' => $ collection ->currentPage (),
212- 'links ' => array_filter ([
213- 'previous ' => $ collection ->previousPageUrl (),
214- 'next ' => $ collection ->nextPageUrl (),
215- ]),
216- ],
217- ]),
218- default => $ item ,
219- };
181+ return match (true ) {
182+ $ collection instanceof CursorPaginator => [
183+ 'cursor ' => [
184+ 'current ' => $ collection ->cursor ()?->encode(),
185+ 'prev ' => $ collection ->previousCursor ()?->encode(),
186+ 'next ' => $ collection ->nextCursor ()?->encode(),
187+ 'count ' => count ($ collection ->items ()),
188+ ]
189+ ],
190+ $ collection instanceof LengthAwarePaginator => [
191+ 'pagination ' => [
192+ 'count ' => $ collection ->lastItem (),
193+ 'per_page ' => $ collection ->perPage (),
194+ 'current_page ' => $ collection ->currentPage (),
195+ 'total ' => $ collection ->total (),
196+ 'total_pages ' => $ collection ->lastPage (),
197+ 'links ' => array_filter ([
198+ 'previous ' => $ collection ->previousPageUrl (),
199+ 'next ' => $ collection ->nextPageUrl (),
200+ ]),
201+ ],
202+ ],
203+ $ collection instanceof Paginator => [
204+ 'pagination ' => [
205+ 'count ' => $ collection ->lastItem (),
206+ 'per_page ' => $ collection ->perPage (),
207+ 'current_page ' => $ collection ->currentPage (),
208+ 'links ' => array_filter ([
209+ 'previous ' => $ collection ->previousPageUrl (),
210+ 'next ' => $ collection ->nextPageUrl (),
211+ ]),
212+ ],
213+ ],
214+ default => [],
220215 };
221216 }
222217
@@ -231,7 +226,7 @@ protected function formatDataFields(array $data): array
231226 $ formatConfig = \config ('response.format.config ' , []);
232227
233228 foreach ($ formatConfig as $ key => $ config ) {
234- if (! Arr::has ($ data , $ key )) {
229+ if (!Arr::has ($ data , $ key )) {
235230 continue ;
236231 }
237232
@@ -244,7 +239,7 @@ protected function formatDataFields(array $data): array
244239 $ key = $ alias ;
245240 }
246241
247- if (! $ show ) {
242+ if (!$ show ) {
248243 $ data = Arr::except ($ data , $ key );
249244 }
250245 }
0 commit comments