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

Json Rpc Http Direct Call Bundle Laravel Package

tourze/json-rpc-http-direct-call-bundle

Tourze's JSON-RPC HTTP Direct Call bundle lets Symfony apps invoke JSON-RPC services directly over HTTP with minimal boilerplate. Register endpoints and dispatch requests through a lightweight, framework-integrated client for simple, fast remote calls.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Assessment status: provisional. There is no prior assessment on file and the 1.1.0 release notes contain no authored content — the body is a bare GitHub compare link (Full Changelog: .../compare/1.0.1...1.1.0), which is the footer GitHub generates automatically when a release has an empty description. No feature list, no breaking-change notice, no deprecation notice, no migration guidance. Any evaluation of 1.1.0 is therefore an evaluation of the package's shape and risk profile, not of the delta. A firm go/no-go cannot be signed off from this input alone.

Architecture fit. The package name indicates a JSON-RPC 2.0 client over HTTP — a transport/plumbing concern, not a domain framework. That is architecturally favourable: a thin protocol client is easy to isolate behind an interface, keep at the edge of the application, and swap. "Direct call" implies synchronous request/response with no broker, queue, or persistent connection, so it introduces no new infrastructure dependency. The corollary is that it also provides no resilience, async, or batching guarantees beyond whatever the caller wraps around it.

Framework-fit caveat (material). The -bundle suffix is Symfony bundle naming convention, and the vendor (tourze) publishes Symfony-oriented packages. The framing of this review as a Laravel/PHP package may be a misclassification. If the package ships Symfony DI extension classes and services.yaml rather than a Laravel ServiceProvider, Laravel adoption depends either on the package exposing a PSR-18/PSR-17-only core (usable anywhere) or on writing our own container bindings. This must be verified before any integration estimate is credible.

Integration feasibility. Likely high but unconfirmed. If the package is PSR-18/PSR-17 based, it slots under Laravel's HTTP client and existing Guzzle handler stack with minimal ceremony; if it hard-codes a specific HTTP client or Symfony HttpClientInterface, we need an adapter. Not yet determinable from release notes.

Technical risk.

  • Changelog opacity — the primary risk. 1.0.1 → 1.1.0 is a semver minor bump, which under SemVer 2.0.0 commits to backwards-compatible additive change; that is an inference from the version number, not evidence from the release. We cannot confirm what was added, nor rule out incidental behaviour changes in error handling or serialisation.
  • Maintainer signal — an auto-generated release body suggests low release-hygiene, which raises the cost of every future upgrade review. This is a recurring tax, not a one-off.
  • Provenance and community depth — download counts, open-issue ratio, last-commit recency, and test coverage are all unverified.
  • Spec-surface risk — a JSON-RPC client must correctly handle the error envelope (code/message/data), notifications (no response expected), batch arrays, and null-vs-absent id semantics. Any of these handled loosely becomes a debugging sink in production.

Key questions.

  1. Does the package ship a Laravel ServiceProvider and config/ publishable config, or Symfony-only DI wiring?
  2. What are the declared composer.json constraints — PHP version, laravel/framework / illuminate/support, and PSR-18/PSR-17?
  3. Which HTTP client is bound, and is it swappable?
  4. What exactly changed in 1.1.0? Diff 1.0.1...1.1.0 and read the commit log rather than the release body.
  5. Are notifications, batch calls, and JSON-RPC error envelopes covered by the test suite?
  6. Timeout, retry, and connection-pool defaults — caller-controlled or hard-coded?
  7. Is there a tagged, documented support policy, or is the package pre-1.0 in spirit despite the 1.x tags?

Integration Approach

Stack fit. Treat the package as a bounded transport adapter behind our own JsonRpcClient interface. Application code depends on the interface, never on the vendor namespace. If the package turns out to be Symfony-first, swap the adapter implementation for a thin hand-rolled PSR-18 client — the interface survives either way. This keeps optionality cheap.

Migration path. We are at 1.0.1 (implied) and 1.1.0 is additive per semver. Pin exactly ("1.1.0", not ^1.1) until the diff is reviewed, then relax to ^1.1 once the commit log confirms no behavioural changes. Note that if this is a greenfield adoption rather than an upgrade, the 1.0.1 → 1.1.0 question is moot and the binding constraint becomes framework fit.

Compatibility. Build a PHP/Laravel × package version matrix before committing. Check whether the package's PHP floor matches our oldest supported runtime and whether it pulls transitive dependencies that collide with our HTTP stack (multiple PSR-18 implementations registered is a known footgun — the psr/http-client-implementation virtual package must resolve to exactly one provider).

Sequencing.

  1. Spike (1–2 days): composer require in a throwaway Laravel app; verify service resolution, make one live call against a stub JSON-RPC server, exercise an error response and a batch call.
  2. Diff review: read commits between 1.0.1 and 1.1.0; convert findings into release notes ourselves.
  3. Adapter layer: interface + vendor implementation + container binding + config file.
  4. Pilot: one low-blast-radius integration, behind a feature flag.
  5. Widen only after the pilot has run a full error-budget window.

Do not begin at step 3. Steps 1 and 2 are cheap and determine whether steps 3–5 are worth doing at all.

Operational Impact

Maintenance. The absence of authored release notes means every upgrade requires reading raw commits — budget roughly half a day per minor release for review, indefinitely. That is the real carrying cost of this dependency, and it should be weighed against the cost of writing ~200 lines of PSR-18 JSON-RPC client ourselves, which may be the cheaper long-run option for a package this thin.

Support. Upstream support is unverifiable from this input. Escalation path is effectively "read the source." Internal ownership must therefore be explicit: name a single engineer accountable for the adapter, or the dependency becomes orphaned. Mitigate by keeping the vendored surface small enough to fork or replace in under a week.

Scaling. Synchronous direct calls scale with concurrency of the calling process, not with the package. Latency is additive per call; a fan-out of N remote calls serialises unless we parallelise at our layer. Batch support (if present) reduces round-trips but concentrates failure — one bad element can fail the whole array, so partial-failure handling is ours to build. Watch outbound connection limits and per-host socket pressure under load.

Failure modes.

  • Transport: DNS failure, connection refused, TLS errors — must surface as typed exceptions, not generic errors.
  • Timeout: no default timeout is safe; enforce one at the adapter level or a hung upstream exhausts PHP-FPM workers and takes the app down with it. This is the highest-severity failure mode.
  • Protocol: malformed JSON, id mismatch, JSON-RPC error envelope returned with HTTP 200 — a naive client treats 200 as success and silently loses the error. Verify explicitly.
  • Idempotency: retries on non-idempotent remote methods can double-apply side effects. Retry policy must be per-method, not global.
  • Upstream contract drift: the remote service can change schema without our dependency changing at all; validate responses at the boundary.

Ramp-up. Low for a PHP engineer already fluent in HTTP clients — the concepts are standard. The ramp-up cost is not the package, it is the undocumented release history; onboarding guidance should point at the adapter interface and a written summary of the package's actual behaviour, not the upstream README. Estimate roughly one day to productive, contingent on a working spike example being committed to the repo.

Recommendation: HOLD. Do not adopt or upgrade on the strength of these release notes. The 1.1.0 delta is unevaluable as published. Commission the spike and diff review above; the decision to build on this package or replace it with an in-house PSR-18 client should follow within one sprint, and this assessment should be reissued with findings at that point.

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.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle