app->isProduction() ? $rule->letters()->uncompromised() : $rule; }); Builder::macro('jsonPaginate', function (?int $maxResults = null, ?int $defaultSize = null) { $maxResults = $maxResults ?? 100; $defaultSize = $defaultSize ?? 100; $paginationMethod = 'paginate'; // 'simplePaginate' or 'paginate'; $size = (int) is_null(request()->input('page.size')) ? $defaultSize : request()->input('page.size'); $size = $size > $maxResults ? $maxResults : $size; $paginator = $this ->{$paginationMethod}($size, ['*'], 'page.number') ->setPageName('page[number]') ->appends(Arr::except(request()->input(), 'page.number')); return $paginator; }); Collection::macro('paginate', function (?int $defaultSize = null, ?int $maxResults = null, $page = null) { $maxResults = $maxResults ?? 100; $defaultSize = $defaultSize ?? 25; $size = (int) is_null(request()->input('pageSize')) ? $defaultSize : request()->input('pageSize'); $size = $size > $maxResults ? $maxResults : $size; $page = (int) is_null(request()->input('page')) ? 1 : request()->input('page'); return new LengthAwarePaginator( $this->forPage($page, $size)->values(), $this->count(), $size, $page, [ 'path' => LengthAwarePaginator::resolveCurrentPath(), 'query' => Arr::except(LengthAwarePaginator::resolveQueryString(), 'page'), 'pageName' => 'page', ] ); }); Collection::macro('jsonPaginate', function (?int $maxResults = null, ?int $defaultSize = null, $page = null) { $maxResults = $maxResults ?? 100; $defaultSize = $defaultSize ?? 100; $size = (int) is_null(request()->input('page.size')) ? $defaultSize : request()->input('page.size'); $size = $size > $maxResults ? $maxResults : $size; $page = (int) is_null(request()->input('page.number')) ? 1 : request()->input('page.number'); return new LengthAwarePaginator( $this->forPage($page, $size), $this->count(), $size, $page, [ 'path' => LengthAwarePaginator::resolveCurrentPath(), 'query' => Arr::except(LengthAwarePaginator::resolveQueryString(), 'page.number'), 'pageName' => 'page[number]', ] ); }); } }