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

Url Link Type Extension Laravel Package

anomaly/url_link_type-extension

A PyroCMS/Laravel addon that adds a URL link field type to the Streams platform, letting editors add and validate external links as a reusable field type in your modules and addons. Lightweight and simple to register.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit This is not a general-purpose Laravel package; it is an addon for the Streams Platform (anomaly/streams-platform) and specifically extends the Navigation module (anomaly/navigation-module) by registering an additional LinkType. Its entire surface area is one class implementing the Navigation link-type contract plus a form builder for capturing the URL, target, and label. That means architectural fit is binary: it is a clean, idiomatic fit if the host application is PyroCMS 3.x / Streams, and a non-starter otherwise. There is no standalone value to a conventional Laravel app — nothing here is reusable outside the addon contract.

Integration feasibility Mechanically trivial if the ecosystem matches. Streams addons follow Laravel package conventions with auto-discovered service providers; the expected path is composer require anomaly/url_link_type-extension, confirm the provider registers, then verify the "URL" option appears in the Navigation module's link-type selector and persists to the links table. Realistically a half-day spike including staging verification. The friction is not the code — it is dependency resolution against a legacy Laravel/PHP constraint set.

Technical risk High, driven almost entirely by project health rather than code complexity:

  • Adoption signal is zero. 0 stars, 0 dependents, no downstream validation, no security review, no community bug reports to mine. A package score of 0.15 reflects an effectively unmaintained artifact.
  • Version ceiling. The addon targets the PyroCMS 3.x era (Laravel 5.4–8.x, PHP 7.x–8.0). Any host on Laravel 9+ will fail composer resolution against anomaly/streams-platform long before this package is the blocker.
  • Bus factor of one, effectively zero. Anomaly Labs has shifted focus away from PyroCMS; upstream fixes for this addon should be assumed unavailable.
  • Security surface. A "URL link type" renders operator-supplied URLs into navigation. Without explicit validation/sanitization you inherit open-redirect and javascript:-scheme risk. This must be verified in code, not assumed.
  • No test suite or CI observable. Regression detection falls entirely on your staging process.

Key questions

  1. Which exact PyroCMS/Streams and Laravel versions does the composer.json constrain, and does that match our lockfile today?
  2. Does the link type validate scheme/host and escape output, or does it store and render raw input?
  3. Does it support target, rel="noopener", and per-link attributes, or is it a bare href only?
  4. Is the feature actually needed, or can a route-backed link type (already shipped in Navigation) cover the requirement?
  5. If we fork, who owns the fork and what is the patch-and-rebase cadence?
  6. What is our exit path if we migrate off PyroCMS — is navigation data exportable?

Integration Approach

Stack fit Only viable inside a Streams Platform application: PHP 7.4–8.x, Laravel 5.4–8.x, Composer 2, and an existing anomaly/navigation-module install. Confirm the Navigation module is present and rendering before adding link types — this addon is a leaf dependency and adds no value without its parent module.

Migration path There is no migration path into this package from a non-PyroCMS stack, and no meaningful migration out of it either, because the artifact is one link type. The realistic decision is build-vs-buy: implementing an equivalent link type inside your own addon namespace is a few hours of work and eliminates the third-party dependency entirely. For a single-feature addon with zero upstream activity, in-house ownership is the lower-risk path and the one I would default to.

Compatibility Pin the dependency explicitly and test resolution against a copy of the production composer.lock before committing. Expect the constraint graph (anomaly/streams-platform, anomaly/navigation-module, laravel/framework) to be the actual decision point. If resolution requires downgrading core packages, stop — the addon is not worth a core version regression.

Sequencing

  1. Spike (branch): composer require in an isolated branch, confirm link type registers and persists.
  2. Security review: read the link type and form builder for URL validation and output escaping; add validation if absent.
  3. Staging: render navigation with edge-case URLs (external, relative, query strings, unicode) and confirm cache invalidation.
  4. Vendor or fork: if adopted, commit a fork under our org or copy the class into our own addon namespace — do not depend on an unmaintained upstream in production.
  5. Document: record the fork point, rationale, and upgrade implications in the architecture decision log.

Operational Impact

Maintenance Effectively self-maintenance from day one. Budget for occasional composer drift and PHP-version bumps handled internally. The code volume is small enough that a fork is cheap to keep alive; the cost is ownership, not effort.

Support No vendor support, no issue traffic, no maintainer responsiveness to assume. Internal engineers are the support tier. Acceptable only because the blast radius is one navigation link type.

Scaling Runtime cost is negligible — link-type resolution runs per navigation render and should sit behind the Navigation module's existing caching. Watch for cache-key staleness when link records change; that is a Navigation module behavior, not this addon's, but it will surface here first as "the URL didn't update."

Failure modes

  • Composer resolution breaks on any core Laravel/Streams upgrade.
  • Class-not-found or unregistered link type after a core update silently drops existing URL links from rendered menus.
  • Stored URLs render unescaped → open redirect or script injection via CMS admin (privileged, but still an escalation vector).
  • Broken external links with no health check — no link validation is provided.
  • Abandonment: no upstream CVE response; you own disclosure triage.

Ramp-up Low for any Laravel developer — the addon is a single small class. The real learning curve is Streams Platform conventions (addon registration, form builders, presenters, view namespaces), which is ecosystem knowledge, not package knowledge, and is required for the Navigation module anyway. Estimate one developer-day for a Laravel-fluent engineer with no prior Streams exposure to reach productive confidence.

Recommendation Do not adopt as a standing dependency. The package solves a small problem correctly, but zero adoption, no maintenance signal, and a legacy version ceiling make it a liability rather than leverage. If the hosting application is already PyroCMS and the feature is needed, reimplement the link type in-house (a few hours) or vendor a reviewed copy — either is cheaper over the product lifecycle than depending on anomaly/url_link_type-extension.

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.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource