Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Rest Bundle Laravel Package

gollumsf/rest-bundle

gollumsf/rest-bundle is a Symfony bundle for building RESTful APIs with less boilerplate. It helps configure resource endpoints, handle requests, serialize responses, and keep JSON API output consistent across services.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — unchanged, and it remains the gating fact. gollumsf/rest-bundle is a Symfony bundle, not a Laravel package. Bundles depend on Symfony's HttpKernel, bundle registration, compiler passes, and config-tree semantics. Laravel's container, routing, and middleware pipeline are not compatible surfaces. Nothing in v4.2.1 alters this. If the target stack is Laravel, the fit is zero and this release does not move the number.

What the release does change: technical credibility, materially. The prior assessment characterized this as an untested micro-helper with no API contract. That characterization no longer holds. The release discloses 452 tests at 100% coverage across Symfony 6.4, 7.0–7.4, 8.0 and 8.1, on PHP 8.2 and 8.4 — a genuine compatibility matrix, which is the single strongest maturity signal available for a package of this size. The engineering content is also substantive rather than cosmetic: the maintainer correctly distinguishes counting SQL rows from counting hydrated entities (COUNT(a) vs COUNT(DISTINCT a)), recognizes that limit applied to a fanned-out join produces non-deterministic short pages, and deliberately rejects Doctrine's Paginator because it rewrites the query and breaks pre-existing queryCallback state (groupBy, having, distinct). Choosing an additive MIN/MAX aggregate over a rewriting paginator to preserve third-party callbacks is a considered API-stability decision, not an accident. This is a maintainer who understands Doctrine hydration semantics and cares about not breaking downstream queries.

Integration feasibility — still nil for Laravel; upgraded for Symfony. For Laravel the answer does not change: there is no bridge, no dependents, no path. For a Symfony target, feasibility has moved from "no documented contract" to "documented sorting contract (docs/Sorting.md), disclosed compatibility range, quantified test coverage." That is enough to sequence an integration against, which was the specific blocker previously cited.

Technical risk — the license remains dominant and is not addressed by this release. The earlier assessment flagged GPL-3.0 as viral copyleft and the primary reason a commercial legal team would refuse distribution. Release notes are silent on licensing; they neither confirm nor rescind it. That determination must be re-verified directly against composer.json and the shipped LICENSE file before any adoption decision. Nothing in a pagination bugfix reduces this exposure.

Secondary risk — the fix is behaviorally correct but structurally invasive. Sorting across a to-many relation now emits GROUP BY on the root entity identifier plus a MIN/MAX aggregate. The maintainer asserts this composes with callbacks that have already set groupBy, having, or distinct, and that simple-column and to-one sorting are byte-identical. Both claims are plausible and consistent with the design, but they are exactly the class of claim that needs a regression pass against your callbacks, not the fixture suite's. Adding a GROUP BY to a query that already has one is the highest-probability interaction defect here.

Metadata anomaly — unresolved. The prior assessment flagged a release timestamp of 2026-08-29 as a future/invalid date and treated the 17.37 score as an upper bound. The publication of v4.2.1 is evidence the package is live and shipping, but it does not resolve whether the scoring pipeline emits bad dates. That remains an open registry-quality issue, escalated separately from this package.

Key questions for the requester:

  1. Is the target stack Laravel or Symfony? If Laravel, this evaluation still terminates — the release is irrelevant to that decision.
  2. What is the license, verified from the artifact rather than from metadata? GPL-3.0 has not been cleared by this release.
  3. Does the intended distribution model include shipping the bundle (on-prem, appliance, SDK, white-label), or is it SaaS-only?
  4. Which existing endpoints sort or paginate across a to-many collection, and do any of their queryCallback implementations already set groupBy, having, or distinct? Those are the regression surface.
  5. On the largest production collection, what is the cost of COUNT(DISTINCT …) plus a grouped aggregate sort versus the previous plan? This is a correctness fix that trades a small amount of query complexity for eliminating non-deterministic pagination.
  6. Who owns this code after integration, given bus factor of one and no vendor?

Integration Approach

Stack fit. Laravel 10/11/12 stacks use Eloquent, the service container, middleware groups, and JsonResource transformers. The bundle assumes Doctrine-flavored Symfony controllers and kernel event subscribers. v4.2.1 is a Doctrine QueryBuilder fix — it deepens the Doctrine coupling rather than broadens the addressable surface. There is no overlap to exploit, and the release makes the Symfony-specificity more pronounced, not less.

Migration path. Do not integrate into Laravel. If the target is Symfony, the honest framing shifts: this is no longer "reject and reimplement," it is a narrow build-vs-buy decision scoped to sorting and pagination across associations — a well-defined, genuinely fiddly problem (row-counting vs entity-counting, limit-after-fan-out, deterministic ordering) that this release demonstrates the maintainer has actually solved. Buy the sorting/pagination surface; do not adopt the bundle as a general REST scaffolding layer. API Platform remains the correct choice for a broader Symfony API build.

Compatibility. Now evidenced rather than unknown: Symfony 6.4 through 8.1, PHP 8.2 and 8.4. That is a real upgrade ceiling and a real support window, and it is the first time the package has published one. Note the two-query design is retained deliberately — this is not a one-query paginator.

Sequencing (Symfony target only).

  1. Verify license from the artifact. If GPL-3.0 stands and distribution is in scope, stop.
  2. Confirm Symfony minor is inside the 6.4–8.1 tested range.
  3. Pin to v4.2.1 specifically — earlier versions carry the incorrect-count and short-page defects, and the symptom is non-deterministic, so it will not reproduce reliably in staging.
  4. Inventory every endpoint that sorts or paginates through a to-many relation. These are the only queries whose SQL shape changes.
  5. Regression-test those endpoints, with emphasis on queryCallback implementations carrying their own groupBy, having, or distinct.
  6. Compare before/after totals against a known-good entity count, not a row count.

For a Laravel target, the spike cap stands at one engineer-day and the expected outcome is still a documented "incompatible" finding. Forking is not a mitigation: GPL-3.0 forbids relicensing a derivative under permissive terms.

Operational Impact

Maintenance — the one area this release genuinely improves. Bus factor is still one, and there is still no vendor. But 100% coverage across an eight-version Symfony matrix is a meaningful offset: it means the maintainer has automated the "does it still work on the next Symfony" question, which is precisely the failure mode that usually kills single-maintainer bundles. A maintainer shipping a correctness fix for a non-deterministic bug that no one would have reported clearly is not disengaged. Abandonment risk is lower today than it was yesterday, though it is still concentrated in one person.

Support. No vendor, no SLA, no commercial backing. Documentation now includes a dedicated deep-link section (docs/Sorting.md#crossing-a-collection), which is a real improvement over "README only." Caveat: release notes and at least some documentation are in French, which adds friction for an English-speaking on-call rotation and should be factored into ramp-up.

Scaling. The fix is performance-positive for correctness and mildly negative for query cost: COUNT(DISTINCT …) and a grouped MIN/MAX sort cost more than the naive versions they replace, though both remain single-query and the design stays at two queries total. This is the right trade — the previous behavior was producing wrong page counts, which is an order-of-magnitude worse problem than a slightly heavier count. Benchmark on the largest collection before committing to a page-size contract.

Failure modes to plan for:

  • License contamination at distribution — still highest severity, still discovered late (at ship review), still expensive to unwind. Unchanged by this release and not addressed by it.
  • Callback interaction on the new aggregate path — the package now injects GROUP BY and aggregate selects. A queryCallback that already groups, or that selects a non-aggregated column, is the realistic breakage vector. Surfaces in production only on endpoints that traverse a collection.
  • Silent behavior shift on upgrade — endpoints that previously returned 4 entities for limit 5 will now return 5. Anything downstream that "worked" around the short page (padded responses, client-side dedupe, off-by-one pagination loops) will now misbehave in a different direction. Treat this as a breaking change for consumers even though the SQL contract is additive.
  • Abandonment — downgraded from "default state" to "plausible within 24 months," given active correctness maintenance and a real test matrix. Still own it from day one.

Ramp-up. Near-zero for the API surface, since there is very little to learn. The real ramp-up cost is diagnostic: understanding why sorting through a collection uses an aggregate, and knowing when a short page is the bundle's bug versus your callback's. Budget half a day for a mid-level engineer on the sorting documentation plus the regression pass.

Bottom line for the portfolio. v4.2.1 is a substantive, well-reasoned correctness fix from a maintainer demonstrating real Doctrine depth, and it retires the "untested micro-helper" finding outright. It does not retire the Laravel framework mismatch — that remains disqualifying and this release makes the package more Doctrine- and Symfony-specific, not less. It also does not touch the GPL-3.0 question, which remains the dominant commercial risk and must be verified before anything else. Recommendation: reject for Laravel, unchanged. For a Symfony target, move from reject to conditional accept, scoped narrowly to sorting/pagination across associations, gated on license verification and a regression pass over collection-traversing endpoints. Separately, the invalid 2026 release timestamp is still unexplained — the package obviously ships, so the defect is in the scoring pipeline, not the registry entry, and it will corrupt freshness signals across the whole portfolio.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk