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

Email Field Type Laravel Package

anomaly/email-field_type

An email field type for the PyroCMS Streams platform on Laravel, adding a reusable, validated email input to custom fields and entry forms so modules can capture and store addresses consistently.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What the package actually is anomaly/email-field_type is a single-purpose Streams Platform field type addon for PyroCMS 3.x (Anomaly Labs). It registers an email field type that supplies three things: an input view (text input rendered in Streams forms), server-side validation rules (an email rule plus length constraint), and a presenter/output view that typically renders a mailto: link. It is a thin subclass of the platform's FieldType abstraction — likely a handful of PHP files, a config/lang file, and two Twig views.

Architecture fit

  • Only fits one architecture. This is not a general Laravel package; it is an addon that plugs into the Streams addon/field-type registry (FieldTypeServiceProvider + FieldType subclass + addon manifest + namespaced lang/view). Outside PyroCMS/Streams it has no meaningful integration surface.
  • Where it fits, it fits correctly. It uses the platform's intended extension point for field types, so it is a clean reference implementation of "how to add a field type" — arguably its highest-value use to a TPM today is as a template for an internally owned field type, not as a dependency.
  • Likely superseded. Later Streams/PyroCMS versions ship common field types (including email) in the core/platform package. The real architectural risk is a slug/binding collision (anomaly.field_type.email) where the addon is silently shadowed or the container binding conflicts.

Integration feasibility

  • Low mechanical effort: composer require, autoload, register the provider (Streams addon discovery or explicit config/app.php entry depending on version), clear caches, dump-autoload.
  • Real effort is in verification, not installation: confirming the field type resolves, the DB column type/length is what you expect, and validation actually fires server-side.

Technical risk — HIGH

  • Abandoned / no signal: 0 stars, 0 dependents, score 0.18. No issue triage, no security review, no CVE process. Bus factor is effectively zero.
  • Era-locked: targets Laravel 5.4–5.8 / PHP 7.x-era Streams. Will not run on Laravel 9+/PHP 8.2+ without edits.
  • No visible test suite, so behavior must be confirmed by hand against your Streams version.
  • Mitigating factor: tiny attack surface, no runtime dependencies, permissive MIT (forkable), and the code is small enough to fully audit in under an hour. Risk is concentrated in compatibility, not complexity.

Key questions

  1. Which PyroCMS/Streams version are we on, and does it already ship an email field type? If yes, this package is redundant — recommend removal, not adoption.
  2. Are there existing streams_fields rows with field_type = 'email' that depend on this binding surviving?
  3. Does the field type enforce email server-side, or only via client-side/HTML5 validation?
  4. What is the DB column mapping (varchar length, nullability) and does it match our existing data?
  5. Does the presenter escape output before building the mailto: anchor (injection risk in href)?
  6. Is there an internal owner willing to vendor/fork it, or is this a drive-by dependency?

Integration Approach

Stack fit

  • Target: PyroCMS 3.x / Streams Platform 1.x on Laravel 5.4–5.8, PHP 7.1–7.4, Twig-based views.
  • Not a fit for Laravel 8+/9+/10+/11, modern PHP, or any non-Streams application. Do not attempt to adapt it as a generic Laravel validation helper — the value is the field-type wiring, not the code.

Migration path (in order of preference)

  1. Use core instead. If the platform already provides an email field type (or a text field type with an email validation rule configurable in field settings), configure that and drop this package. This is the lowest-risk path and should be the default recommendation.
  2. Vendor-fork into a private namespace. Copy the field type into addons/{yourvendor}/{yourname}-field_type/ or an internal package with your own vendor prefix and slug (e.g. acme.field_type.email). Eliminates the collision risk, gives you PHP 8/Laravel-version portability, and converts an unmaintained dependency into owned code (MIT permits this; retain the license header).
  3. Consume as-is with a pinned version only if you are frozen on a matching Streams version and need the feature live this sprint. Pin to an exact version, never a range.

Compatibility checks before merge

  • composer.json constraint on anomaly/streams-platform and PHP.
  • Abstract method signatures on FieldType (getInput, getOutput, getRules, getColumnType) still match your platform version — these changed across Streams releases.
  • Addon slug uniqueness against the platform's field-type collection.
  • Lang/view namespaces resolve (addon.anomaly.field_type.email::…) and Twig loader can find the views.

Sequencing

  1. Inventory: query streams_fields (and any streams_assignments) for field_type = 'email'; count affected streams and entry volume.
  2. Spike in a dev/staging clone: install, composer dump-autoload, clear Streams/addon caches, confirm the field type appears in the field-type picker exactly once.
  3. Verify the full path: create a stream field, submit an invalid address (must fail server-side), submit a valid one, render the output view, inspect the emitted anchor for escaping.
  4. Verify the DB column created matches expectations; check for truncation against existing data.
  5. Promote to production behind a normal release; monitor form submission error rates for one cycle.
  6. Schedule consolidation onto the core field type and a data migration for existing values; remove the package in the following release.

Operational Impact

Maintenance

  • No upstream maintenance. Treat the code as vendored. Assign an internal owner at adoption — if no owner can be named, do not adopt path 3 above.
  • Ongoing cost is near-zero if the Streams version is frozen; it becomes a recurring tax the moment you upgrade the platform, because the addon will be the thing that breaks first.
  • MIT license makes forking safe; the fork is ~1 file to modernize (typing, PHP 8 deprecations) if you stay on Streams.

Support

  • Fully self-supported. No maintainer response, no issue history to mine, 0 dependents means no community troubleshooting path.
  • Onboarding is cheap: a Laravel developer can read the entire surface in an hour. The non-obvious knowledge is Streams domain knowledge (addon manifests, field-type registry, Twig namespacing), not this package.

Scaling

  • Negligible runtime cost — no external services, no I/O, no caching concerns, no N+1 exposure. Field types instantiate per form render; at typical CMS volumes this is noise.
  • The scaling question is organizational, not technical: an unmaintained addon becomes a blocker on framework upgrades, and upgrade debt compounds with every version you skip.

Failure modes

  • Silent shadowing / collision — platform's core email field type wins; your addon is inert and you don't notice until a form behaves unexpectedly.
  • Validation gap — server-side rule missing or bypassed, leaving client-side-only validation; invalid addresses land in the DB.
  • Output injection — presenter builds mailto: from raw field value without escaping; crafted input breaks out of the href.
  • Column mismatch — DB column length/nullability differs from existing data, causing truncation or silent coercion on save.
  • Upgrade breakage — abstract method signature drift on FieldType produces fatals at boot, not at the form, which is worse (whole admin down).
  • Asset/view resolution failure — namespace or addon manifest misconfiguration yields blank inputs or missing lang labels.

Ramp-up

  • Estimate 0.5 day for a Laravel developer to audit and verify, plus 1 day for a developer unfamiliar with Streams to learn the addon/field-type model. Add a half-day for the inventory query and upgrade-path planning.
  • Overall verdict from a TPM lens: do not adopt as a strategic dependency. Its opportunity value (33.24) reflects a reusable pattern, not a package worth carrying. The correct disposition is (a) confirm the platform already covers email fields and remove it, or (b) fork it into owned code with a private slug if a gap genuinely exists.
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