Download the PHP package splitstack/laravel-typewriter without Composer
On this page you can find all versions of the php package splitstack/laravel-typewriter. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download splitstack/laravel-typewriter
More information about splitstack/laravel-typewriter
Files in splitstack/laravel-typewriter
Package laravel-typewriter
Short Description Unified TypeScript tooling for Laravel: DataPacket transport envelope, DTO/VO type generation, and Wayfinder route types in a single command.
License MIT
Informations about the package laravel-typewriter
laravel-typewriter
DDD-friendly unified TypeScript tooling for Laravel. One command generates:
- DataPacket types — a typed Back-to-Front transport envelope with defaults, metadata, and source/target routing
- DTO / Value Object types — from laravel-data
Dataclasses, plain DTOs, and value objects - Route types — via laravel/wayfinder (optional)
Powered by spatie/laravel-typescript-transformer under the hood.
Installation
Publish the config:
Publish the TypeScript DataPacket utility class:
The DataPacket pattern
DataPacket is a typed envelope for passing data from PHP to the frontend. It gives you:
- Typed payload (
data) — a laravel-dataDataobject, or an untyped array for convenience - Per-key defaults (
defaults) — validated against the keys indataso stale defaults can't sneak in - Metadata (
meta) — out-of-band context (pagination, permissions, flags) - Global fallback (
default) — a single value for when the whole packet has no specific match - Source / target routing (
source,target) — BackedEnum scalars that tell the frontend where data came from and where it's going, without magic strings on either side
Convenience mode (untyped)
Use DataPacket directly when you don't need end-to-end type safety:
TypeScript receives DataPacket where data is Record<string, unknown>.
Typed mode (end-to-end type safety)
Scaffold a typed packet + its companion Data class:
This creates two files:
Use it in your controller:
TypeScript consumption
Type generation
Source groups
Configure which directories to scan in config/typewriter.php:
Transformer chain
For each source group, typewriter runs a single typescript-transformer pipeline:
| Priority | Transformer | Handles |
|---|---|---|
| 1 | DataPacketTransformer |
Typed DataPacket subclasses |
| 2 | DataClassTransformer |
laravel-data Data classes |
| 3 | EnumTransformer |
BackedEnums (source/target routing) |
| 4 | PlainClassTransformer |
Plain VOs, DTOs, any non-abstract class |
Classes that no transformer matches are silently skipped.
Commands
Output
Marking classes for export
laravel-data Data classes — add #[TypeScript]:
Plain classes — no attribute needed. Any public typed property or @property PHPDoc tag in a scanned directory is picked up automatically.
DataPacket subclasses — no attribute needed. The DataPacketTransformer detects them by class hierarchy.
BackedEnums — put them in the enums directories of the packets source group:
Generated output:
Configuration reference
Requirements
- PHP 8.4+
- Laravel 11 / 12 / 13
- spatie/laravel-data ^4.0
- spatie/laravel-typescript-transformer ^3.0
- laravel/wayfinder (optional)
License
MIT
All versions of laravel-typewriter with dependencies
illuminate/console Version ^11.0|^12.0|^13.0
illuminate/support Version ^11.0|^12.0|^13.0
phpstan/phpdoc-parser Version ^2.0
spatie/laravel-data Version ^4.0
spatie/laravel-typescript-transformer Version ^3.0