All notable changes to laravel-data
will be documented in this file.
- Add support for better exception messages when parameters are missing
- Fix default properties generating validation rules when not provided
- Add last() method on DataCollection (#486)
- Add new manual written present attribute rule always overwrites a generated required rule
- Added the ability to create data files, casts, transformers and rules using Laravel Idea plugin #485
- Add some config options to the
make:data
command (#449, #335)
- Add laravel v10 support
- Add ability to instantiate an eloquent cast when null value using null database values (#425)
- Revert only use validated data (spatie#438) -> see #432
- Add support for computed values
- Add merge method to Data Collections (#419)
- Allow field references in same validation attribute
- Generic return type of toResponse function (#437)
- Only use validated data (#438)
- Add missing constructor parameters to error message (#433)
- Make Lazy Macroable
- Update TypeScript Transformer with new closure lazy type
- Add support for Lazy Closures which can be used with inertia
- reverted the reverted #393 branch
- Allow to fetch Lazy data properties in unified way (#403)
- revert: Fix usage of properties' mapped output names in 'only', 'except', 'includes', and 'excludes' operations (spatie#393)
- Fix issue when validating and creating a data object was impossible to use magic creation methods
- Fix usage of properties' mapped output names in 'only', 'except', 'includes', and 'excludes' operations (#393)
- Add some extra documentation
- Introduce FormRequestNormalizer (#380)
- Add support for models without all columns (#385)
- Add benchmarks for testing data performance
- Add some performance improvements for data creation and transformation
- Performance improvements
- Fix issue where promoted protected constructor parameters were seen as possible property canidates
- Allow using closures within the with method (#372)
- Add support for Validation Rule Contract in Rule rule (#362)
- Allow laravel-data validation rules to be used in Laravel validator (#375)
- Add WithCastable attribute (#349)
- Quote non-standard object keys when transforming to Typescript (#367)
- Allow filling props from route parameters (#341)
- Better handing of custom regex validation rules(#342)
- Fix types (#348)
- Improve validation when strings are passed for nested data objects
- Add FieldReference to Before and After Validation attribute (#345)
- The validation logic is completely rewritten
- Add support for nested nullable and optional data objects
- Allow referencing other fields in validation attributes when the data is nested
- Allow referencing url parameters (and even model properties) in validation attributes
- Allow circular dependencies when validating data
- Add support for nested validation messages and attributes
- Package specific properties are renamed to avoid conflicts
- Serialization logic updated to only serialize your properties
- Prevent fatal error when passing a string containing only an integer to JSON Normalizer (#322)
- Ignore leading ! in DateTimeInterfaceTransformer (#325)
- Extend the make:data command to be more flexible (#335)
- Add Laravel 10.x support (#331)
- Add a way to prepend DataPipes to the pipeline (#305)
- Better IDE completion (#307)
- Make eloquent collection cast respect collection (#308)
- fix support to return 201 status code in Json Responses (#291)
- Add generic return type for DataCollection::toCollection (#290)
- Improve ide.json completion (#294)
- Pass in payload relative to the data object when generating rules (#264)
- ignore phpstorm attributes when instantiating and add readonly property (#281)
- Stop using custom pipeline when creating data magically from requests
- set timezones in datetime casts (#287 )
- add support for optional properties in TypeScript transformer (#153)
- refactor test suite to Pest (#239)
- update the docs
- add a
StudlyMapper
- add better support for Livewire
- accept 'float' as data type (#237)
- fix typo in mime type validation rule(#243)
- add support for enums in validation attributes
- add support for withoutTrashed to exists validation attribute (#248)
- add PHP 8.2 testing in GH actions
- add ability to modify properties before the data pipeline (#247)
- fix first and last page url are never null (#215)
- add ability to statically retrieve a data models rules (#221)
- improved pattern matching in DataCollectionAnnotationReader (#225)
- add ExcludeWithout attribute rule (#230)
- improve getValidationRules to also retrieve wildcard rules (#231)
- return property with or without mapping the name (#199)
- Improve pattern matching in DataCollectionAnnotationReader (#214)
- Add ability to retrieve rules for a data object (#221)
- Use generics with Data::collection (#213)
- Improve pattern matching in DataCollectionAnnotationReader (#214)
- Fix TypeScript Transformer paginated collections, first and last page url are never null (#215)
- Add support for a JsonSerializer
- Fix generic iterator definition for data collections
- Fix validation of DataCollection objects not working as expected
- Add support for timezone manipulation in casts and transformers (#200)
- use AbstractCloner instead of reflection (#196)
- Add var dumper caster (#195)
- Allow direct pipeline call (#193)
- Rename ArrayableNormalizer (#191)
- Make normalizers configurable (#190)
- Add cast lazy condition result to bool (#186)
- Add conditional return types for collections (#184)
- Fix windows tests
- Fix validation rules not being used for data collections and objects
- Add IDE completion support (#182)
- Add support for invokable rules (#179)
- more consistent use of transform through codebase for transforming collections and data
- Add class defined partials (#164)
- Use mapped property names in TypeScript (#154)
- Add make:data command (#157)
- Better support for overwritten rules
- Add support for Lazy inertia props (#163)
- Add support for array query parameters as partials (#162)
Version 2 of laravel-data is a complete overhaul, we've almost completely rewritten the package.
This is a (non-complete) list of the new features:
- A DataPipeline
- Data normalizers
- Mappable property names
- Wrapping of data in responses
only
andexcept
methods on Data and DataCollections- Multiple parameter magic methods
- Optional properties
- Split DataCollections
- Better support for TypeScript Transformer
- And a lot more ...
- Fix optional parameters (#152)
- Use protected properties and methods (#147 )
- add values() on DataCollection by @Nielsvanpach in spatie#135
- @Nielsvanpach made their first contribution in spatie#135
Full Changelog: https://github.com/spatie/laravel-data/compare/1.4.7...1.5.0
- support $payload as a dependency in rules (#123)
- Add Dependency Injection for rules, messages, and attributes methods (#114)
- Add support for stdClass payload casting (#106)
- use present validation rule instead of required for data collections
- allow using default password config in password validation attribute (#94)
- solve binding issues on Laravel Octane (#101)
- fixes a bug where models nested by relation could not be created due to date casts
- add a
links
array to the paginated response - stop execution of
lazy::whenLoaded
closure when the relation isnull
- fix for aborting value assignment after a false boolean (#80)
- add a
WithoutValidation
attribute - allow transformers to target native types, data collections and data objects
- Allow transformers to target Data and DataCollections
- removes checks for built in types and
isBuiltIn
fromDataProperty
- add better support for defaults
- Laravel 9.x by @aidan-casey in spatie#77
- Removes Spatie's Laravel Enums from dev requirements by @aidan-casey in spatie#76
- @aidan-casey made their first contribution in spatie#77
Full Changelog: https://github.com/spatie/laravel-data/compare/1.3.2...1.3.3
- add support for json_encode to Data objects
- add support for json_encode to DataCollection objects
- add basic support for intersection types
- allow casting of built in PHP types
- add support for inferring enum rules
- fix an issue where an Enum validation attribute would not work
- fixes the RequiredRuleResolver to support custom rules like
Enum
- add an Enum validation rule attribute
- rename the
authorized
method toauthorize
- disable the behavior were excluded conditional properties still could be included
- fix return type notice message
- fixes an issue where data object could not be created when it had lazy nested data object
- fixes windows test suite
- when creating data objects, we now will always run validation when a
Request
object is given not only when a data object is injected - removal of
DataFromRequestResolver
- added
DataValidatorResolver
- change data property types collection checking procedure
- move
spatie/test-time
dependency to require-dev - expand support for nested data object creation (#19)
- expand support for annotating data collections
- revert allow ignoring with a closure within a unique rule
- allow ignoring with a closure within a unique rule
- add a
WithData
trait for quicker getting data from objects
- fix required rules being added when not allowed
- initial release