All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
8.18.0 - 2025-01-01
- Updated dependencies (service update).
- License year changed to
2018-present
.
8.17.0 - 2024-12-11
- Updated dependencies (service update).
8.16.0 - 2024-11-28
- Updated dependencies (service update).
8.15.0 - 2024-11-21
- Updated dependencies (service update).
8.14.0 - 2024-11-13
- Test that ensures the
RequestMustBeJson
middleware throwsBadRequestHttpException
, when nocontent-type
is set in the request headers.
- Updated dependencies (service update).
8.13.0 - 2024-10-29
- Updated dependencies (service update).
TypeError
thrown inCaptureFieldsToSelect
middleware, when "select" query parameter is not a string. #197.
8.12.0 - 2024-10-21
- Updated dependencies (service update).
8.11.0 - 2024-10-02
- Updated dependencies (service update).
DatabaseAdapter
fails when attempting to move or copy to the same destination as the source (adapter now skips performingmove()
orcopy()
, if source and destination are the same). #195.
8.10.0 - 2024-09-23
- Updated dependencies (service update).
8.9.0 - 2024-09-04
- Updated dependencies (service update).
- Incorrect
port
argument, inBrowserTestCase
(--port
expected, butport
was given as argument).
8.8.0 - 2024-08-07
- Updated dependencies (service update).
8.7.0 - 2024-07-22
- Updated dependencies (service update).
8.6.0 - 2024-06-27
- Updated dependencies (service update).
- Incorrect contents listing, due to missing separator affix in path (in
DatabaseAdapter
). #193.
8.5.0 - 2024-06-18
- Updated dependencies (service update).
- Out-of-memory when attempting to detect mime-type of large file. #191.
8.4.0 - 2024-05-28
- Updated dependencies (service update).
\Aedart\Tests\Integration\Flysystem\Db\Storage\StorageDiskTest::getEnvironmentSetUp()
now uses the default database connection. #190.
fclose()
: supplied resource is not a valid stream resource when attempting to copy a stream, inDatabaseAdapter
(psql connections were affected). #190.DatabaseAdapter::createDirectory()
fails when attempting to create directories that already exists (mariadb connections were affected). #190.- Incorrect dummy file visibility when created, in
\Aedart\Tests\Integration\Flysystem\Db\Adapters\D0_FileVisibilityTest::canSetVisibilityForFile()
(mariadb connection was affected). #190. - Incorrect test assertion of file contents, in
\Aedart\Tests\Integration\Flysystem\Db\Adapters\C0_WriteFilesTest::canUpdateFile()
(psql connection was affected). #190.
8.3.0 - 2024-05-07
- Updated dependencies (service update).
8.2.0 - 2024-04-23
- Updated dependencies (service update).
8.1.0 - 2024-04-07
@condorhero/vuepress-plugin-export-pdf-v2
package as dev dependency (due to PDF export experiment of docs, inpackages.json
).
- Updated dependencies (service update).
Aedart\Streams\Stream::close()
not compatible withPsr\Http\Message\StreamInterface::close(): void
(happens when psr/http-messagev2.0
is required). #187.
8.0.0 - 2024-03-18
\Aedart\Testing\Generators\MockTrait
, a replacement for the deprecatedMockTrait
in PHPUnit.ISO8601_EXPANDED
in\Aedart\Contracts\Utils\Dates\DateTimeFormats
. #142.snapshot()
andusage()
in\Aedart\Utils\Memory
. #104.randomizer()
in\Aedart\Utils\Math
,\Aedart\Utils\Arr
and\Aedart\Utils\Str
. #150, #151.- Randomizer
Factory
that is able to return either of the followingStringRandomizer
,NumericRandomizer
orArrayRandomizer
(adapters for PHP's nativeRandom\Randomizer
), in\Aedart\Utils\Random
. #150. buffer()
method in\Aedart\Contracts\Streams\Stream
interface. #156.copyFrom()
,openFileInfo()
,openUploadedFile()
andfilename()
methods in\Aedart\Contracts\Streams\FileStream
interface. #156.
Breaking Changes
- Minimum required PHP version changed to
v8.2
. - Adapted CI environment to test PHP
v8.2
andv8.3
. - Upgraded to use Laravel
v11.x
packages. - Upgraded to use Symfony
v7.x
packages. - Reworked
TraitTester
to no longer use deprecated features from PHPUnit. Now usingMockery
to mock traits instead. - Refactored
AlphaDashDot
andSemanticVersion
to inherit fromBaseValidationRule
, in\Aedart\Validation\Rules
(previously inherited from deprecatedBaseRule
, which has been removed). #158. - Converted
RecordTypes
andVisibility
interfaces to enums, in\Aedart\Contracts\Flysystem\Db
(contributed by Trukes). #161, #162. ValidatedApiRequest
no longer overwrites Laravel's "class basedafter()
validation rules". #168, #167.defaultScanner()
now returnsClamAv
scanner (previously returnedNullScanner
), in\Aedart\Antivirus\Manager
.
\Aedart\Auth\Fortify\Actions\RehashPasswordIfNeeded
and\Aedart\Auth\Fortify\Events\PasswordWasRehashed
. Password rehashing is now a default part of Laravel's\Illuminate\Contracts\Auth\UserProvider
.\Aedart\Utils\Math::randomInt()
- replaced by\Aedart\Utils\Math::randomizer()->int()
. #150.\Aedart\Utils\Arr::randomElement()
- replaced by\Aedart\Utils\Arr::randomizer()->value()
. #150.
- Missing return type for
\Aedart\Support\AwareOf\Console\CommandBase::execute
(after upgrade to Symfonyv7.x
). RehashPasswordIfNeededTest
fails due to enabled auto-rehash password feature in Laravel.- Incorrect quotes for expected SQL, in
BelongsToFilterTest
,SearchFilterTest
,SortFilterTest
,SearchProcessorTest
, andRelationsFilteringTest
(caused by updates to SQLite driver in Laravelv11
). LaravelExceptionHandler::render()
response violates interface, in\Aedart\Core
(A newAdaptedExceptionHandler
interface has been added which overwritesrender()
return tovoid
). #153.
\Aedart\Http\Api\Requests\ValidatedApiRequest::after
(was deprecated inv7.12.0
).\Aedart\Filters\Query\Filters\Fields\BaseFieldFilter::datetimeRangeComparison
(was deprecated inv7.11.3
).\Aedart\Audit\Models\Concerns\AuditTrailConfiguration
(was deprecated inv7.4
).\Aedart\Audit\Traits\HasAuditTrail
(was deprecated inv7.0
).\Aedart\Audit\Traits\RecordsChanges
(was deprecated inv7.0
).\Aedart\Contracts\Validation\FailedState
(was deprecated inv7.4
).\Aedart\Validation\Rules\BaseRule
(was deprecated inv7.4
).\Aedart\Validation\Rules\Concerns\AthenaeumRule
(was deprecated inv7.4
).\Aedart\Validation\Rules\Concerns\Attribute
(was deprecated inv7.4
).\Aedart\Validation\Rules\Concerns\Translations
(was deprecated inv7.4
).\Aedart\Validation\Rules\Concerns\ValidationFailure
(was deprecated inv7.4
).\Aedart\Tests\Integration\Validation\Concerns\ValidationFailureTest
(no longer required).
7.33.0 - 2024-03-13
- Updated dependencies (last expected service updated in the
v7.x
series.)
7.32.0 - 2024-02-29
- Updated dependencies (service update).
7.31.0 - 2024-01-25
- Updated dependencies (service update).
- Remove locked version constraint for
illuminate/*
packages¹.
¹: "From version x" constraints were at some point removed by mistake and caused undesired locked/fixed versions of all Laravel packages.
7.30.1 - 2024-01-14
- Various code style errors (happened after update of bin dependencies - easy coding standard).
7.30.0 - 2024-01-14
- Updated dependencies (service update).
- Updated "bin" dependencies (this only affects the Athenaeum mono-repository / maintainers).
- Changed test version to PHP
8.1
for the PHPCompatibility check.
7.29.0 - 2024-01-02
- License year bumped to 2024.
- Updated dependencies (service update).
7.28.0 - 2023-12-13
- Updated dependencies (service update).
- Unable to remove file, due to missing path prefix (in Flysystem
DatabaseAdapter
).
7.27.0 - 2023-11-24
- Updated dependencies (service update).
7.26.0 - 2023-11-17
- Updated dependencies (service update).
7.25.0 - 2023-10-25
- Updated dependencies (service update).
7.24.0 - 2023-10-02
- Updated dependencies (service update).
7.23.0 - 2023-09-15
- Updated dependencies (service update).
7.22.1 - 2023-09-04
InfectionFreeFile
throws exception when invalid file is attempted scanned (in the AntiVirus package). #180.
7.22.0 - 2023-09-01
- Updated dependencies (service update).
7.21.0 - 2023-08-25
- Minimum required PHP version set to
8.1.22
, due to PHP's internal magic database. #178.
- Incorrect expected MIME-Type for
*.xz
files. Before PHP8.1.22
, theFileInfoSampler
returnedapplication/octet-stream
. It now returnsapplication/x-xz
, which is the correct MIME-Type for*.xz
files. #178.
7.20.0 - 2023-08-16
- Updated dependencies (service update).
- Missing validation package dependency (in the AntiVirus package). #176.
7.19.0 - 2023-08-07
- Updated dependencies (service update).
7.18.1 - 2023-07-25
- Target
Illuminate\Contracts\Cache\Repository
is not instantiable while buildingIlluminate\Console\Scheduling\ScheduleRunCommand
. #174.
7.18.0 - 2023-07-06
- Updated dependencies (service update).
7.17.0 - 2023-06-27
- Updated dependencies (service update).
7.16.0 - 2023-06-16
- Updated dependencies (service update).
- Refactored
BaseStore
to usematch()
expression instead ofswitch
(in circuit breaker package). - Refactored
AppliesPayload
to usematch()
expression instead ofswitch
(in Http Client package). - Removed ignore rule for
\Aedart\Streams\Stream
, after update to latest version of PHPStan. #173. Ignored\Aedart\Streams\Stream
from being scanned by PHPStan, due to incorrect "__debugInfo()
is not covariant with return type array of method Aedart\Contracts\Streams\Stream::__debugInfo()" error message. #173.Precision
cases documented using PHPDoc (in Utils package).
7.15.0 - 2023-05-31
- Updated dependencies (service update).
7.14.0 - 2023-05-15
- Updated dependencies (service update).
7.13.0 - 2023-05-04
- Support for low/high datetime range offset for milliseconds precision, if Eloquent model's datetime format supports it.
- Date or datetime
Precision
enum, in utils package.
- Applied datetime format is now derived from Eloquent model (when query is from a model), in
DatetimeFilter
. Setting manual format is still supported.
- Additional "high" range date constrain for
<=
and>
causes incorrect results, inDatetimeFilter
. These constraints have now been removed again.
7.12.0 - 2023-05-03
- Custom
DateFormat
validation rule.
DateFilter
andDateTimeFilter
are now be able to accept RFC 3339 Extended Zulu formatted input and deal with UTC, even when timezone is submitted as'+00:00'
or'Z'
.
7.11.3 - 2023-04-28
- Incorrect inclusive or exclusive ranges query built, for when
!=
operator, inDatetimeFilter
(entire query refactored!). #170.
datetimeRangeComparison()
method (inBaseFieldFilter
) because it does not produce correct range, in combination with!=
filter operator. #170.
7.11.2 - 2023-04-20
- "Class based after validation rules" feature (introduced in Laravel
v10.8.0
) breaks abstractApiValidatedRequest
. #167. - Undefined array key when Http Status Code does not have a default status text, in
ApiErrorResponse::makeFor()
. #166.
after()
method inApiValidatedRequest
. This method will be removed in the next major version. Replaced by the newafterValidation()
method. #168.
7.11.1 - 2023-04-18
- Target identifier rules not applied in
ProcessMultipleResourcesRequest
. Rules were wrapped in a closure which never got invoked. #165.
7.11.0 - 2023-04-15
- Updated minimum required dependencies (chore).
7.10.1 - 2023-04-07
- Missing implementation of abstract
setUpTheTestEnvironmentTraitToBeIgnored
(declared in\Orchestra\Testbench\Concerns\Testing
, since Orchestra Testbenchv8.4.0
).
7.10.0 - 2023-03-26
- Migrated documentation to use vuepress v2. Also given the docs an improved look & feel. #163.
7.9.1 - 2023-03-17
- Default Eloquent Etag is not unique after it has been updated, due to
updated_at
not correctly obtained, inEloquentEtag
concern.
7.9.0 - 2023-03-17
GenericResource
now accepts acallable
etag, which is invoked when the etag is requested from the resource.CreateSingleResourceRequest
, andShowSingleResourceRequest
now use a callback to resolve resource's etag, which increases performance in situations when no request is not conditional (no preconditions requested).
7.8.0 - 2023-03-16
RouteParametersValidation
concern, in Http Api package.
7.7.2 - 2023-03-15
$record
argument ignored when authorizing found record, inShowSingleResourceRequest
,UpdateSingleResourceRequest
andDeleteSingleResourceRequest
.
7.7.1 - 2023-03-14
- Call to undefined
getStatusCode()
, when no Http status provided and given exception is not instance ofHttpExceptionInterface
, inApiErrorResponse::makeFor()
.
7.7.0 - 2023-03-13
getModel()
is now able to return assigned model from newusingModel()
method, inBaseRelationReference
.
7.6.0 - 2023-03-13
asSingleModel()
andasMultipleModels()
shortcut methods for determining how to format loaded relation, inBaseRelationReference
.
7.5.0 - 2023-03-12
Pipeline
andPipelineHub
aware-of helpers, in Support package.PasswordBroker
andPasswordBrokerManager
aware-of helpers, in Support package.
- Minimum required version of Laravel packages changed to
v10.3
. - Reduced
sample_size
to 512 bytes, for "file-info" in tests, for the Mime Types package (Now in accordance with official documentation). - Improved documentation regarding supported types, for the Configuration package.
7.4.0 - 2023-03-01
- Antivirus package, with a default ClamAV scanner and validation rule for file uploads.
BaseValidationRule
abstraction in Validation package (an alternative to the deprecatedBaseRule
abstraction).buffer()
method inStream
(not yet available in interface).openFileInfo()
,openUploadedFile()
,copyFrom()
andfilename()
methods inFileStream
(not yet available in interface).Driver
,MockableDriver
,DriverProfile
, andDriverOptions
concerns in Utils package.
- Renamed internal
performCopy()
tocopySourceToTarget()
inCopying
concern in Stream package. - Refactored internal
outputSingleRange()
method inDownloadStream
. Now uses streambuffer()
method. - Improved method description of
copy()
andcopyTo()
methods, inFileStream
. - Improved documentation regarding which read methods automatically rewinds the stream.
- Incorrect "is readable" check of source stream in
copy()
andcopyTo()
, inFileStream
. - Incorrect description of
append()
method in documentation, regarding PSR-7 stream detaching.
- All concerns in the
\Aedart\Validation\Rules\Concerns\*
namespace. These will be removed in the next major version. \Aedart\Contracts\Validation\FailedState
. Will be removed in the next major version.\Aedart\Validation\Rules\BaseRule
. Will be removed in the next major version. Use\Aedart\Validation\Rules\BaseValidationRule
instead.
7.3.0 - 2023-02-23
- Translation package, with a profile-based translation exporter component.
- Laravel Translation Loader aware component, in Support package.
7.2.0 - 2023-02-19
- Support for parsing
*.neon
files, in Config package. - Enabled static analysis of all source code, using PHPStan.
- Improved the
deploy-docs.sh
script.
- Unable to parse
*.yaml
configuration files inFileParserFactory
(Config package). - Removed duplicate path from easy-coding-standards configuration.
GuzzleHttp\Psr7\stream_for
not found, inInvalidHttpMessage
(test utility)- Incorrect check of trait usage by service provider, in Service
RegistrarTest
7.1.0 - 2023-02-18
- Authentication package, with a Laravel Fortify action for rehashing user's password after login.
ApplicationInitiator
now offers utilities to setAPP_KEY
, in Testing package.$enablesPackageDiscoveries
set tofalse
inApplicationInitiator
(was previously not specified).
- Resources from previous conducted tests are published, despite not registered. Fixed in
ApplicationInitiator
(Testing package) andApplication
(Core application package). - Missing return type for
count()
methods, in\Aedart\Streams\Stream
,\Aedart\Http\Api\Resources\SelectedFieldsCollection
, and\Aedart\Utils\Memory\Unit
. - Missing return type for
__toString()
methods, in\Aedart\ETags\ETagsCollection
, and\Aedart\MimeTypes\MimeType
. - Missing return type for
jsonSerialize()
method, in\Aedart\ETags\ETagsCollection
. - Incorrect return type for
__debugInfo()
, in\Aedart\Testing\Helpers\Http\MultipartResponse
and\Aedart\Testing\Helpers\Http\MultipartContent
. - Summation collection unit test has a high probability of failure, due to weak generated random number.
7.0.1 - 2023-02-16
- Invalid
illuminate/testing
version constraint in Testing package.
7.0.0 - 2023-02-16
- Interdependencies of all Athenaeum packages. Force release major version
7.0.0
¹.
¹: This issue was caused by monorepo builder and prevented correct version download of the alpha pre-releases.
7.0.0-alpha.1 - 2023-02-16
- Split workflow fails to push packages, due to strange directory ownership issue of
/tmp/monorepo_split/build_directory
.
7.0.0-alpha - 2023-02-16
- Http conditional request evaluator, with support of RFC9110 preconditions, in the ETags package.
- API Request abstractions, in the Http Api package.
- Support for uploading data using a stream, via
attachStream()
method, in Http Clients package. DownloadStream
response helper that is able to output an entire attachment, single part, or multipart (range download), in ETags package.HttpCaching
concern inApiResource
, which can make it easier to set Http Cache Control headers.HasArbitraryData
interface and a default implementation inArbitraryData
concern, as part of the utils package.sync()
method added forFileStream
. #105.BaseSearchQuery
andBaseSortingQuery
abstractions for custom filtering queries viaSearchFilter
orSortFilter
, in the filters package.Database
utility component, in the database package.- Query
Joins
concern, in the database package. Prefixing
concern, in the database package.BaseRule
can now set and obtain aFailedState
(aUnitEnum
), to allow handling of more complex error messages.RemoveResponsePayload
middleware in the Http Api package.- Audit
Callback
helper, which allows setting a custom message for all audit trail events dispatched in a callback. BulkRecorder
helper in audit package.recordNewChange()
util method inChangeRecording
concern, in audit package.- Service
Registrar
invokes booting and booted callbacks of service providers. - Service
Registrar
can now bind singleton instances of non-associative$singletons
array, if available in service providers. hasDebugModeEnabled()
in CoreApplication
(defined by Laravel'sApplication
interface, fromv10.x
).DateTimeFormats
interface that contains PHP's predefined date and time formats, along with a few additional, such as RFC3339 that supports"Z"
or"-/+00:00"
offset.asMicroSeconds()
in theDuration
util.setAllowedDateFormats()
inDateFilter
.setDatabaseDatetimeFormat()
inBaseFieldFilter
abstraction.- Several
is{status}
methods added in ResponseStatus
, as well as additional Http status code utilities. now()
in theDuration
util.to()
method in MemoryUnit
util.- Test
Response
utility. MultipartResoonse
testing utility.
Breaking Changes
- Minimum required PHP version changed to
v8.1
. - Adapted CI environment to test PHP
v8.1
andv8.2
. - Upgraded to use Laravel
v10.x
packages. FieldFilter
constructor andmake()
method arguments are now optional, to allow creating instances without triggering immediate validation of field, operator and value.DateFilter::allowedDateFormats()
visibility changed to public and now returns default date / datetime formats, when none specified.ApiResourceServiceProvider
changed to be an aggregate service provider that automatically registersETagsServiceProvider
.SearchFilter
no longer applies unnecessary query constraint (the first comparison constraint).- Dispatching "multiple models changed", via
ModelChangedEvents::dispatchMultipleModelsChanged
no longer skips all models, if the first is marked as "skip next recording", in audit package. $models
attribute (public) can no longer be anarray
, inMultipleModelsChanged
. Attribute must be ofCollection
instance.ModelChangedEvents
has been redesigned to accept all supported arguments for model changed events.publicPath()
andlangPath()
method signatures changes, in CoreApplication
. Methods are now inherited from Laravel'sApplication
interface (Laravelv10.x
).
Non-breaking Changes
SearchFilter
andSearchProcessor
now support custom search callbacks. #129.SortFilter
andSortingProcessor
now support custom sorting callbacks.getResourceKeyName()
inApiResource
now throwsLogicException
, if unable to determine resource's identifier key name.hash()
method can now accept options for the specified hashing algorithm. #106.- Methods for setting and determining if datetime should be converted to UTC, in
DatetimeFilter
. - Switched to
xxHash
as default hashing algorithm in etagsBaseGenerator
and example configuration. - Temporary and public URL tests for database adapter are forced to evaluate to true. Original tests marked them as skipped, because features are not supported.
- Extracted translation utilities into own trait in
BaseRule
, which now allow setting translation key prefix (vendor prefix). #114. - Extracted
$attribute
into own trait inBaseRule
. Can now be set or obtained via appropriate getter and setter methods. MicroTimeStamp::fromDateTime()
now accepts\DateTimeInterface
instead of\DateTime
.Duration
now accepts\DateTimeInterface
instead of\DateTime
.RequestETagsMixin::httpDateFrom()
now parses Http Date acc. to RFC9110 (a looser date format parsing was previously used).- Response
Status
interface now extends\Stringable
(Http Clients package). - Response
Status
now guesses a status phrase when none given.
DatetimeFilter
does not accept dates formatted as RFC3339 with"Z"
(Zulu).- Typed property
Duration::$microTimeStamp
must not be accessed before initialization. - Monorepo builder configuration broken after update.
- Code style of all packages. Easy coding standard configuration, in
ecs.php
, was previously not applied correctly.
\Aedart\Audit\Traits\RecordsChanges
trait. Replaced by\Aedart\Audit\Concerns\ChangeRecording
.\Aedart\Audit\Traits\HasAuditTrail
trait Replaced by\Aedart\Audit\Concerns\AuditTrail
.\Aedart\Audit\Models\Concerns\AuditTrailConfiguration
concern. Replaced by\Aedart\Audit\Concerns\AuditTrailConfig
.
SearchProcessor::language()
. Features didn't work as intended. No replacement has been implemented.Str::tree()
. Replaced byArr::tree()
.
6.8.1 - 2023-01-19
- Type Error when attempting to parse etags collection from Http header value that was set to
null
, in\Aedart\ETags\Mixins\RequestETagsMixin::etagsFrom()
.
6.8.0 - 2023-01-09
- Bumped license year.
6.7.0 - 2022-12-03
throw
option for flysystem database connection. This option was never used.
language()
method inSearchProcessor
. This method has no effect on the search processor, nor its underlyingSearchFilter
. #125.
6.6.0 - 2022-11-28
- New ETags utilities package. #126.
- Useless
$notFoundMsg
is now removed, inside Circuit Breaker Manager's internal "find or fail" methods (cleanup). - Root package
composer.json
now uses "self.version" again, for the Athenaeum packages it replaces.
- Default configuration directory changed to
config/
, to match a default Laravel application (fixed in documentation).
6.5.2 - 2022-11-13
This defect was introduced by orchestra/testbench
, from v7.12.0
, in which the "testing" database connection configuration was removed.
Several tests assumed that a "testing" connection was available and attempted to use it.
A custom TestingConnection
util class now ensures such a connection exists for affected tests.
6.5.1 - 2022-11-04
6.5.0 - 2022-10-23
- Http Api utilities package. #116.
- CI environment now runs on Ubuntu 22.04. Also added minor improvements to the PHP settings.
6.4.0 - 2022-09-18
- Documentation for
\Aedart\Utils\Arr::tree()
.
- Upgraded minimum required patch versions of all major dependencies (Maintenance).
\Aedart\Utils\Str::tree()
, replaced by\Aedart\Utils\Arr::tree()
. Method will be removed in next major version.
- Uncaught Error: Class "Normalizer" not found, in monorepo builder (vendor-bin dependency).
6.3.0 - 2022-07-14
- RFC3339 Extended datetime format is now also supported by default, in
DatetimeFilter
. - Codeception upgraded to
5.0.0-RC6
- Broken test in
DatabaseAdapterTest
, due to update in either PHPUnit or Codeception's way of handling "data providers".
6.2.1 - 2022-05-28
- Domain name set to
0
, when none provided for Cookie, inCookiesHelper
(Http Clients package). - Broken Set Cookie tests.
ContainerConfigurator
no longer supported, inecs.php
(easy coding standard configuration).
- Upgraded min. required version of
guzzlehttp/guzzle
to7.4.3
, due to Cross-domain cookie leakage.
6.2.0 - 2022-05-11
- Flysystem Database Adapter package.
file
driver not found in Core application / Maintenance Mode. This was caused due to missing default configuration for maintenance mode, and after Laravelv9.9
added a default value for their configuration.
6.1.1 - 2022-04-27
- Incorrect setter method signature, in
\Aedart\Support\Helpers\Database\DbTrait
6.1.0 - 2022-04-25
\Aedart\Utils\Version::application()
can now accept a path to a "version file" (optional), which replaces the default obtain version information from composer. #108
6.0.2 - 2022-04-07
- Unintended version lock of required Laravel packages in
composer.json
.
6.0.1 - 2022-04-05
- Missing
aedart/athenaeum-mime-types
dependency in streams package. - "src refspec master does not match any" in Monorepo builder script.
6.0.0 - 2022-04-05
- Streams package that offers wrappers for common stream operations.
Dto
andArrayDto
can now accept and resolve union types. #82.- MIME-types detection package, based on file's contents via a string, resource of path.
- Maintenance Mode package that offers additional drivers for Laravel's Application, when using
php artisan down
. Available drivers:'array'
and'json'
. #67. EnvironmentHandler
interface in Core package, as a replacement for the application environment related methods, that were removed from Laravel's foundationApplication
interface in version9.x
. #85whereSlugNotIn()
method in\Aedart\Database\Models\Concerns\Slugs
(Sluggable
interface also defines method). #64.fetchAll()
method for theHasMany
relation, in Redmine package. #57.- Optional
$mode
argument has been added to\Aedart\Utils\Math::applySeed()
, which specifies the seeding algorithm to use. - Optional seeding algorithm
$mode
argument has been added to\Aedart\Utils\Arr::randomElement()
. hasCallback()
andhasFallback()
methods added in\Aedart\Utils\Helpers\Invoker
.- Documentation for
\Aedart\Utils\Arr::differenceAssoc()
(previously undocumented. Method was added inv5.17
). #45. - Documentation for
\Aedart\Utils\Helpers\Invoker
(previously undocumented. Helper was added inv5.12
). InteractsWithDeprecationHandling
added toLaravelTestHelper
.isValid()
method inJson
utility.Memory
utility component.split.yaml
GitHub Action workflow as replacement for previous "split" command from Symplify Monorepo Builder. #66.- Security and Support Policy. #97.
- Code of Conduct. #97.
- Documentation of Audit package. #44.
Breaking Changes
- Minimum required PHP version changed to
v8.0.2
. - Method arguments and return data types are changed (all packages), in accordance with PHP
v8.0
. Most fluent methods now returnstatic
. #83, #77. populate()
method now returnsstatic
instead ofvoid
, in\Aedart\Contracts\Utils\Populatable
interface.all()
method added inApiResource
interface (change is only breaking if you have custom implementation of interface). #54.fresh()
method added in Http ClientManager
(change is only breaking if you have custom implementation of interface). #51.PathsContainer
is now aware of "lang path" (path to language files / directory). The core application has also been modified to offer alangPath()
method. #76.- Replaced
\DateTime
with\DateTimeInterface
for all date related aware-of helpers. The\Aedart\Contracts\Utils\DataTypes::DATE_TIME_TYPE
has also been changed. #75. SearchFilter
no longer usesStopWords
concern (concern has been removed). #63.- Return type of
package()
andapplication()
is now set to\Aedart\Contracts\Utils\Packages\Version
, in\Aedart\Utils\Version
. #68. PackageVersionException
is now thrown, when version cannot be obtained for a package, in\Aedart\Utils\Version::package()
. #68.- Default datetime format is now RFC3339, when no format is specified, for all Http Query Grammars, in Http Clients package.
$seed
argument can no longer benull
in\Aedart\Utils\Math::applySeed()
method.
Non-breaking Changes
CHANGELOG.md
is now formatted according to Keep a Changelog.when()
andunless()
methods accept acallable
as the result argument. #81.storage_path()
helper in Core package will now pass$path
argument to applicationstoragePath()
method, when application is available ($path
argument added in Laravelv9.x
).- Core
Application
uses'json'
file based maintenance mode as driver, when application state is "down". #67. application()
method no longer uses git to obtain application's version. It now relies on Composer'sInstalledVersions::getRootPackage()
, in\Aedart\Utils\Version
. #68.- Refactored
ModelHasChanged
andMultipleModelsChanged
events. Both events are now a bit more fluent, in Audit package. - Refactored event listeners for Audit package. Listeners now inherit from base
RecordsEntries
abstraction. - Replaced
fzaninotto/faker
package withfakerphp/faker
. #23. - Replaced property calls with method calls, on faker instance throughout many tests (PHP faker deprecated several properties since
v1.14
). #23. - Upgraded to Symplify Monorepo Builder
v10.x
. #60, #65. \Aedart\Utils\Dates\Duration
now inherits fromStringable
.castAsDate()
now also acceptsDateTimeInterface
as argument, inArrayDto
. #82- Replaced
get_class()
calls with the use of new::class
magic constant (introduced in PHP 8). Change is throughout all packages. - Replaced Travis with GitHub Actions as CI service. #102
- Contribution guide has been improved. #97.
\Aedart\Filters\Query\Filters\Concerns\StopWords
has been removed. Component didn't work as intended and caused several issues. #63.$language
argument from\Aedart\Filters\Query\Filters\SearchFilter
(was deprecated inv5.25
). #63.undot()
from\Aedart\Utils\Arr
. Theundot()
method has been implemented in Laravel'sArr
, which acts as the base class for\Aedart\Utils\Arr
. This change is not breaking.terminating()
method from\Aedart\Contracts\Core\Application
. Method is defined in Laravel's Application interfaces, which the core application inherits from.configurationIsChanged()
,getCachedConfigPath()
,getCachedServicesPath()
,getCachedPackagesPath()
,getCachedRoutesPath()
androutesAreCached()
methods from CoreApplication
(methods were not supported to begin with. They were defined by Laravel'sApplicaiton
interface, but extracted into separate interfaces fromv9.x
). #86.audit-trail.listener
setting, in/configs/audit-trail.php
configuration (was deprecated inv5.27
).MocksApplicationServices
removed fromAthenaeumTestHelper
andLaravelTestHelper
. The "mock application services" helper has been deprecated by Laravel.
storagePath()
must be compatible with interface declared method, in\Aedart\Core\Application
(method was changed in Laravelv9.x
).- Input value "filter" contains a non-scalar value, when attempting get array value from http query via inside
\Aedart\Filters\BaseProcessor::value()
(happened after upgrade to the latest version Laravel / Symfony). #69. - Unexpected value for parameter "name": expecting "array". #71.
- Incorrect commit reference passed on to
\Jean85\Version
, in\Aedart\Utils\Version
(happened after upgrade to the latest version of "Pretty Package Versions"). - Schedule commands not registered in Core Application's console
Kernel
/ Artisan. #84. \Illuminate\Support\ServiceProvider
imported into\Aedart\Contracts\Service\Registrar
interface. This created unintended dependency on Laravel package.\Illuminate\Filesystem\Filesystem
imported into\Aedart\Contracts\Support\Helpers\Filesystem\FileAware
interface. This created unintended dependency on Laravel package.\Illuminate\Http\Request
imported into\Aedart\Contracts\Support\Helpers\Http\RequestAware
interface. This created unintended dependency on Laravel package.\Illuminate\Log\LogManager
imported into\Aedart\Contracts\Support\Helpers\Logging\LogManagerAware
interface. This created unintended dependency on Laravel package.\Illuminate\Routing\Redirector
imported into\Aedart\Contracts\Support\Helpers\Routing\RedirectAware
interface. This created unintended dependency on Laravel package.\Illuminate\Session\SessionManager
imported into\Aedart\Contracts\Support\Helpers\Session\SessionManagerAware
interface. This created unintended dependency on Laravel package.\Illuminate\View\Compilers\BladeCompiler
imported into\Aedart\Contracts\Support\Helpers\View\BladeAware
interface. This created unintended dependency on Laravel package.$_ENV['APP_ENV']
and$_SERVER['APP_ENV']
not unset after each Application test, causing environment detecting tests to fail, in\Aedart\Testing\Athenaeum\ApplicationInitiator
.Codeception\TestCase\Test
class not found, in\Aedart\Tests\Integration\Laravel\ApplicationInitiatorTest
(happened after upgrade to the latest version of Codeception).LoadSpecifiedConfiguration
may not inherit from final class.\Aedart\Testing\Laravel\Bootstrap\LoadSpecifiedConfiguration
no longer inherits fromOrchestra\Testbench\Bootstrap\LoadConfiguration
, which has been declared final (happened after upgrade to the latest version of Orchestra).
5.27.0 - 2022-01-31
MultipleModelsChanged
event in Audit package.RecordMultipleAuditTrailEntries
listener that handlesMultipleModelsChanged
events. Performs a mass insert of audit trail entries.AuditTrailEventSubscriber
that will handle registration of Audit Trail related event listeners.
- The
audit-trail.listener
configuration setting has been replaced withaudit-trail.subscriber
, inconfigs/audit-trail.php
. Will be removed in next major version (in audit package).
ModelChangedEvents
concern is now able to dispatch "multiple models changed" event, viadispatchMultipleModelsChanged()
(in audit package).
$performedAt
argument ignored in\Aedart\Audit\Events\ModelHasChanged
.
5.26.0 - 2022-01-03
- Bumped license year.
5.25.0 - 2021-12-14
- Replaced
ReflectionParameter::getClass
call inIoCPartial
andArgumentFaker
with an alternative, because it's deprecated since PHPv8.0
. #61. - Replaced
socket_create()
call withtempfile()
, inJsonTest
. From PHPv8.0
, thesocket_create()
method returns an object, which can be encoded to Json and thus defeats the purpose of the test. #61. - Converting test model's primary key and auditable id to
string
, to avoid incorrect value comparison in PHPv8.1
, in theB0_AuditTrailTest
. #61. - Upgraded phpcs, easy-coding-standard and other vendor-bin dependencies.
- Removal of stop words causes search results to become undesired.
SearchFilter
no longer automatically removes stop words search term. #63.
- The
StopWords
concern has now been deprecated andSearchFilter
no longer automatically removes anything from given search term. #63.
5.24.2 - 2021-12-10
required
validation rule triggered, despite valid value given inDateFilter
. This happened only when field contained a table name prefix, e.g. "users.created_at".
5.24.1 - 2021-12-09
- Unable to use string value in
BelongsToFilter
, due to incorrect assertion.
5.24.0 - 2021-12-08
BelongsToFilter
that is able to constrain relations of the type "belongs to", in filters package.
- Allowing
FieldCriteria
instances to be given in thefitlers()
, inConstraintsProcessor
. This allows for more advanced filters setup. - Example of
BaseFiltersBuilder
now uses a custom method for the sortable properties to columns map, in documentation.
5.23.0 - 2021-12-02
DateFilter
that is able to match dates stated inY-m-d
format.UTCDatetimeFilter
converts given date to UTC, before attempts to match against database value.
DatetimeFilter
fails matching full date and time. New comparison logic has been added. Previously used Laravel'swhereDate()
query, which yielded incorrect results.
5.22.4 - 2021-11-29
SearchFilter
not applied when'0'
given as search term.
5.22.3 - 2021-11-29
SearchProcessor
not applied when'0'
given as search term.
5.22.2 - 2021-11-24
- Incorrect value assertion for
NumericFilter
, whenis_null
ornot_null
operators used. - Applies list of numeric values validation, when neither
in
ornot_in
operator set, inNumericFilter
.
5.22.1 - 2021-11-18
- Too aggressive stop-word removal, removes more than it should, in Filters package's
StopWords
concern.
5.22.0 - 2021-11-17
- Filters package. Offers a way to create query filters, based on received http query parameters. #59.
5.21.0 - 2021-11-05
- Query
Filter
andFieldFilter
abstractions, in database package. Filtering
concern for Eloquent models, in database package.
5.20.0 - 2021-09-09
all()
method inRedmineApiResource
, which is able to automatically paginate through all available results. #53.
- Unable to run database migrations in tests. #55.
5.19.0 - 2021-09-07
- Redmine API Client package. #52.
fresh()
method in the Http ClientsManger
; able to return a fresh HttpClient
instance, without having the instance cached. The method is not yet supported by the\Aedart\Contracts\Http\Clients\Manager
interface.
BaseSerializer
(Http Message package) will now re-encode json payloads with theJSON_PRETTY_PRINT
set, if a message's ifcontent-type
header contains/json
or+json
. This makes it easier to read json payloads, in debugging situations.
- Call to undefined
GuzzleHttp\Psr7\parse_query()
, in theC1_QueryTest
Http Client tests. #49. - A few broken links (incorrect paths) in the documentation.
5.18.1 - 2021-07-13
- Array to string conversion error when comparing arrays, that contain nested empty arrays - in
Arr::differenceAssoc()
. #47.
5.18.0 - 2021-06-30
SemanticVersion
validation rule.
5.17.0 - 2021-06-28
differenceAssoc()
method inArr
. Able to compute the difference of multidimensional arrays.
5.16.0 - 2021-05-26
formatOriginalData()
andformatChangedData()
, in theRecordsChanges
trait. This allows easier changes to the attributes / data to be stored in an Audit Trail entry.
originalData()
andchangedData()
now invoke the new format data methods, in theRecordsChanges
trait, Audit package.
5.15.0 - 2021-05-07
Breaking Changes
AuditTrailServiceProvider
now publishes migrations rather than loading them directly. This allows changing to installation order (migration file's timestamp).
Caution: These changes can affect rolling back migrations. Please (re)publish service provider's assets to ensure your application is able to roll back the create_audit_trail_table
migration.
- Fails inserting a new audit trail entry into database when user no longer exists, in
RecordAuditTrailEntry
listener. User existence is now checked before inserting new entry. If the user does not exist, thennull
is set as the audit trail entry's user reference.
5.14.1 - 2021-05-06
- Update events were not triggered / dispatched correctly, because they were invoked after database transactions, in
ModelObserver
from the Audit package. Changed the$afterCommit
tofalse
as the default value, to overcome this issue.
5.14.0 - 2021-05-06
- Possibility to skip recording a model's changes, via the
skipRecordingNextChange
method, inRecordsChanges
trait.
5.13.2 - 2021-05-05
- Soft-deleted models not able to be eager-loaded in
AuditTrail
model (auditable relation).
5.13.1 - 2021-05-04
- Incorrect
performed_at
date time value forAuditTrail
records. Previously relied on a model'supdated_at
value, which might not be accurate due depending upon when a "model has changed" event is dispatched (E.g. before or after an operation). In other words, a previous / pastupdated_at
value could be applied, which would be incorrect and inconsistent of with when a given event or action was performed.performed_at
value no defaults to current date time.
5.13.0 - 2021-04-29
- Extracted timestamp attributes names into own method, in
RecordsChanges
trait (Audit package), so that they can be obtained easier. This should allow better customisation of which fields to hide for Audit Trail entries.
5.12.0 - 2021-04-28
- Audit package; a way to automatically record Eloquent Model changes. #43
Invoker
component, inUtils
package.
5.11.0 - 2021-04-19
- Documentation for the ACL package. #35.
- Documentation for the validation package. #38.
- Documentation for the database package. #36.
- Incorrect permissions check, in
\Aedart\Acl\Traits\HasRoles::hasPermission
. Was unable to grant permission to a user, if permission was granted to multiple roles.
5.10.1 - 2021-03-25
- Fix ACL models not respecting database connection in transactions. In situations when a custom connection was set or resolved, the ALC Permissions
Group
andRole
didn't use that given connection in their custom creation or update methods.
5.10.0 - 2021-03-25
- Several tests to verify behaviour of
Slugs
concern, in Database package. #39. createWithPermissions()
andupdateWithPermissions()
helper methods in ACLRole
Eloquent model. #41.
- Removed unnecessary
$slug
merge into$values
parameter inSlugs::findOrCreateBySlug
, in Database package. #40. - Replaced manual transaction rollback handling in
createWithPermissions()
method, inside ACL PermissionsGroup
model. Now using Laravel'sDB::transaction()
method instead. #41.
5.9.0 - 2021-03-23
- Validation package that is intended to offer various rules and other validation related utilities. Presently, it only contains an
AlphaDashDot
rule. #37.
5.8.0 - 2021-03-21
- ACL package which offers a way to store roles and permissions (grouped) in a database. #34.
- Database utilities package. #34.
Sluggable
interface andSlug
concern in new Database package.Str
utility, which offers a few additional string manipulation methods.
- Unable to run database migrations via
LaravelTestCase
. Now implements\Orchestra\Testbench\Contracts\TestCase
, which resolves the issue¹.
¹: Orchestra's MigrateProcessor
component, which is used behind the scene, has an explicit TestCase
dependency. This cannot be circumvented without extensive overwrites of several migration helper methods.
5.7.0 - 2021-03-16
application()
method in\Aedart\Utils\Version
, which is able to return application's version. #25
- Too many Chrome driver processes started in
BrowserTestCase
, possibly causing aConnection Refused
error. #33
5.6.0 - 2021-02-20
- Collections package, with
Summation
andItemProcessor
components. #27 undot()
method inArr
utility.
5.5.1 - 2021-02-10
- Incorrect teardown order in
BrowserTestCase
5.5.0 - 2021-02-10
- Facade root not set during test teardown, in
LaravelTestCase
andApplicationInitiator
¹. - Laravel's
Application
still bound asIoC
's static instance, causing strange behaviour in some tests².
¹: The happened sometime after Laravel released the "parallel testing" feature and Orchestra Testbench enabled it.
²: Unintended side effect of fixing the ApplicationInitiator
.
- Bumped license year, in
LICENSE
files. - Minimum required Orchestra Testbench set to
v6.12.x
.
5.4.0 - 2021-01-08
ApplicationInitiator
now makes use of customLoadSpecifiedConfiguration
. A previously added, but not applied specialisation of OrchestraLoadConfiguration
. Custom component allows specifying the location of configuration files to be loaded, viagetBasePath()
andgetConfigPath()
methods¹.
¹: This change will implicit ensure that changes to LoadConfiguration
will be caught by tests and thereby prevent defects that resulted in patches v5.3.3
to v5.3.5
.
5.3.5 - 2021-01-06
- Incorrect format yield from
getConfigurationFiles
method, inLoadSpecifiedConfiguration
Testing utility¹.
¹: Was in a hurry to fix a "minor" defect, which just caused several other minor defects.
5.3.4 - 2021-01-06
getConfigurationFiles
method still returnedarray
instead of specifiedGenerator
, inLoadSpecifiedConfiguration
Testing utility.
5.3.3 - 2021-01-06
- Incorrect return type for
getConfigurationFiles
method, inLoadSpecifiedConfiguration
Testing utility.
5.3.2 - 2020-12-28
- Boundary values incorrectly shown when using
toHoursMinutes()
andtoMinutesSeconds()
, inDuration
utility. E.g. when attempting to convert -2700 seconds to hours and minutes, thetoHoursMinutes()
method return 00:45, instead of -00:45.
5.3.1 - 2020-12-28
toHoursMinutes()
not able to show above 24 hours, inDuration
utility.toMinutesSeconds()
not able to show above 60 minutes, inDuration
utility.
Both methods failed showing a correct amount, whenever the initial value surpassed 24 hours (or 60 minutes for toMinutesSeconds()
).
5.3.0 - 2020-12-27
fromHoursMinutes
andfromStringHoursMinutes
methods inDuration
utility.
- Laravel
v8.15.x
packages are now required as a minimum. - Updated Orchestra Testbench dependencies to
v6.9.x
. - Added leading zero for
Durataion::toHoursMinutes
short format. - Disabled
failsIfCacheIsNotLockProvider
test, since botch file and null cache drivers now support locks.
5.2.1 - 2020-11-09
- Invalid
$this
reference instatic function
, inDuskTestHelper
. - Call to unknown
makeChromeOptions()
method.
5.2.0 - 2020-11-09
LoadSpecifiedConfiguration
bootstrapper, inTesting
package. Intended for Laravel and Laravel Dusk tests.$browserSourceOutput
property. Location where a page's source code is to be stored, inDuskTestHelper
.
- Switched back to
ChromeOptions::CAPABILITY
(which is deprecated), becauseChromeOptions::CAPABILITY_W3C
ignores command line arguments for Chrome Driver, inDuskTestHelper
. - Extracted configuration loader binding into own method / property, in
DuskTestHelper
. This makes it easier to overwrite, when needed.
5.1.0 - 2020-10-16
- Added
DuskTestHelper
andBrowserTestCase
helpers, which offers integration to Laravel Dusk.
- Changed
LaravelTestHelper
, addedInteractsWithTime
(Laravel's helper) andInteractsWithViews
. #20.
5.0.2 - 2020-10-06
- Incorrect code style caused CI failure.
5.0.1 - 2020-10-06
- Http Message stream not rewound after serialization, when using
debug()
,dd()
orlog()
. See #19 for details. - Removed deprecated
CreateAwareOfCommand
reference fromathenaeum
console application. - Fixed a few typos.
5.0.0 - 2020-10-04
- Added
ListResolver
component. - Added
otherwise()
andgetOtherwise()
methods to Circuit Breaker. - Http
Client
(via RequestBuilder
) is now able to processMiddleware
. - Added
Middleware
andHandler
components for Http Client. Inspired by PSR-15. - Added
QueueHandler
, a middleware processing component for Http Client Requests. - Added
AppliesResponseExpectations
middleware. Replacement for internal response expectations handling in HttpClient
. - Added
ResponseExpectation
component. - Added Http Message
Serializer
components, inAedart\Http\Messages
namespace. - Added
RequestResponseDebugging
Middleware for HttpClient
. - Support for loading TOML configuration files.
- Added Http Request
Builder
aware of component. - Added
Duration
utility. - PHP Compatibility check in Travis.
- Removed internal
applyExpectations()
method fromExpectations
concern, in Http ClientBuilder
. Has been replaced byAppliesResponseExpectations
middleware. - Removed
Aedart\Dto
(was deprecated inv4.x
). - Removed
Aedart\ArrayDto
(was deprecated inv4.x
). - Removed
Aedart\Console\CreateAwareOfCommand
(was deprecated inv4.x
). - Removed
Aedart\Console\CommandBase
(was deprecated inv4.x
). - Removed
Aedart\Console\AwareOfScaffoldCommand
(was deprecated inv4.x
). - Removed all helpers in
Aedart\Support\Properties\Mixed\*
namespace (was deprecated inv4.x
). - Removed all contracts in
Aedart\Contracts\Support\Properties\Mixed\*
namespace (was deprecated inv4.x
).
Breaking Changes
- Upgraded Laravel dependencies to
v8.x
. - Added
bootstrap()
method in\Aedart\Core\Console\Kernel
, due to Laravel's ConsoleKernal
interface change.runCore()
method will now invoke new bootstrap method. getExpectations()
now returns array ofResponseExpectation
instances, in RequestBuilder
.- Changed
StatusCodesExpectation
, now inherits fromResponseExpectation
. Some internal methods have been redesigned. This change should not affect your code, unless you have custom Http RequestBuilder
implementation. - Changed
withExpectation()
, in RequestBuilder
. Now accepts both acallable
and aResponseExpectation
instance. This change should not affect your code, unless you have custom Http RequestBuilder
implementation. - Changed Request
Builder
and HttpClient
interfaces and concrete implementations. Now offers methods for addingMiddleware
. This change only affects you if you have a custom HttpClient
or RequestBuilder
implementation. - Changed Http
Client
and RequestBuilder
, added debugging methods (debug()
,dd()
,log()
...etc.). This change only affects you if you have a custom HttpClient
or RequestBuilder
implementation.
Non-breaking Changes
- Added shortcut methods (
getClient()
andclient()
) for obtaining Http Client instance inProcessOptions
. - Changed
HttpClientServiceProvider
, now inherits from theAggregateServiceProvider
and registers theHttpSerializationServiceProvider
automatically. This eliminates setup of debugging components, for the HttpClient
.
- Fixed incorrect type declarations in PHPDoc (throughout various components).
- Codeception broken after update (in codeception version 4.1.x series).
4.2.1 - 2020-07-31
- Bumped minimum required dependencies, due to security issue / release from Laravel.
4.2.0 - 2020-07-05
- Circuits package that offers a
CircuitBreaker
, with aManager
(profile-based).
4.1.0 - 2020-04-22
LaravelExceptionHandler
adaptor
- Unable to run
schedule:run
command. #10
- Minimum required Laravel packages version set to version
^7.7
4.0.1 - 2020-04-15
- Broken interdependencies in all packages. Removed version
v4.0
from packagist.org to prevent conflicts.
4.0.0 - 2020-04-15 [YANKED]
Application
, custom adaptation of Laravel's Application.Kernel
, custom adaptation of Laravel's Console Application (Artisan).Registrar
, able to register service providers.IoCFacade
, able to resolve bindings or return a default value, if binding does not exist.LastInput
andLastOutput
aware components (console).ListenersViaConfigServiceProvider
, offers registration of event listeners and subscribers via configuration.ConsoleServiceProvider
, offers console commands to be registered via configuration.BaseExeptionHandler
abstraction along with a few default exception handlers that can be used withApplication
, if enabled.Builder
, a Http request builder used by the HttpClient
.- Http Query
Builder
, used by the request builder. Grammar
abstraction to compile Http Query string - three grammars are offered:DefaultGrammar
,JsonApiGrammar
andODataGrammar
.FakerAware
component that can be used for testing purposes.FakerPartial
, offers basic setup for Faker.callOrReturn()
utility method inMethodHelper
.MessageBag
testing component. Intended to store test or debugging messages across components and tests.Version
utility.Math
utility.Arr
utility.string
andint
Milestone
aware componentsApplicationInitiator
andAthenaeumTestHelper
, testing utilities for the custom adaptation of Laravel's Application.MailManagerAware
andMailManagerTrait
Laravel Aware-of Helper.- Http-
ClientFactoryAware
andClientFactoryTrait
Laravel Aware-of Helper. Cookie
andSetCookie
DTOs.
- Deprecated
\Aedart\Console\CommandBase
,\Aedart\Console\AwareOfScaffoldCommand
and\Aedart\Console\CreateAwareOfCommand
components. Commands have been replaced with updated versions within theaedart/athenaeum-support
package. The original commands are still available using theathenaeum
console application. - Deprecated all aware-of helpers that contained
*\Mixed\*
in their namespace. These will be removed in next major version. Replacement components are available within the*\Mixes\*
namespace. The termMixed
has been a soft-reserved keyword since PHPv7.0
.
Breaking Changes
- Required PHP version changed to
v7.4.x
. - Upgraded Laravel dependencies to
v7.6.x
, Symfony tov5.0.x
, Codeception tov4.1.x
, and various other dependencies. - All class properties now have their types declared, if possible.
dto:create
command now generates traits with class type declarations for its properties (formerdto:create-aware-of
command).Dto
andArrayDto
now implements the__serialize()
and__unserialize()
magic methods.- Replaced
\Aedart\Dto
with\Aedart\Dto\Dto
¹. - Replaced
\Aedart\ArrayDto
with\Aedart\Dto\ArrayDto
¹. - Codeception and Orchestra Testbench are now defined as dev-dependencies. You need to require these packages, if you depended on them².
- (Fix)
IoC
no longer high-jacks Laravel'sapp
binding automatically, whengetInstance()
is invoked. This was used to get some of Laravel's components to work outside the scope of a Laravel application. Yet, this was a "hack" that potentially could lead to conflicted with Laravel. This was never intended³! - Redesign entire Http
Client
package, now makes use of a Request Builder and Http Query Builder.
Non-breaking Changes
- Converted athenaeum into a true mono repository. All major components are now available as separate packages, via composer.
- Code style to PSR-12.
- Replaced deprecated
Twig
components, inTwigPartial
trait. UnitTestCase
now usesFakerPartial
for setup Faker.UnitTestCase
now inherits from Codeception'sUnit
test-case.- Using
IoCFacade
to resolve default Http ClientManager
, inHttpClientsManagerTrait
. - Added
\Aedart\Contracts\Container\IoC
and\Illuminate\Contracts\Container\Container
asapp
binding aliases, inIoC
³. - Added possibility to specify specific
vendor
andoutput
paths forinterfaces
andtraits
, in the aware-ofGenerator
. getHeader()
is now case-insensitive, inDefaultHttpClient
andJsonHttpClient
. Handling of headers is now more inline with PSR-7.- Added
data_format
option for Http Clients.
¹: Deprecation of existing abstractions or components is due to the conversion of this package into a mono repository.
Existing abstractions are still available, yet will be removed entirely in v5.0
.
²: You can require packages separately or if you only use the "testing" components, then replace this package with aedart/athenaeum-testing
as dev-dependency and the mentioned packages will all be installed.
³: You have to invoke registerAsApplication()
explicitly to bind the IoC
instance as app
, should you require this during testing or outside a Laravel application.
Warning: do NOT invoke mentioned method if you are using the IoC
within a Laravel application.
It will high-jack the app
binding, which will cause your application to behave unfavourable.
Loader
fails to populate configuration correctly, adds initial directory path to each section. This happens when relative paths are set as the loader's initial directory.Applicaiton
instance not destroyed afterstopApplication()
invoked, inApplocationInitiator
. This resulting in$instance
still containing reference to the application, inside Laravel's Service Container, causing tests to fail.destroy()
does not flush bindings, inIoC
. Instance is destroyed, yet formal Service Containerflush()
was not respected.- Default values not triggered when invoking
toArray()
, inDto
andArrayDto
, when using aware-of traits to create a Dto class. ContainerTrait
's default value returns theFacade
root application, instead ofContainer
. (Strictly speaking, this was not a defect.Application
is an extended version ofContainer
.)- Headers option not initially set in
DefaultHttpClient
. - Default return type of
MailerTrait
andMailQueueTrait
(Laravelv7.x
changed return ofMail
Facade toMailManager
). withOptions()
incorrectly merged options, inDefaultHttpClient
andJsonHttpClient
. This caused strange behaviour, when attempting to overwrite an already set option.- Http Client
Manager
does not use default profile name from configuration, it always returns "default", when no profile name given.
3.1.0 - 2020-01-01
- Updated license
3.0.1 - 2019-09-29
LogicalException
thrown during travis build (tests only), caused byPhpRedisConnector
. Changed test to usepredis
as default laravel redis connection.
3.0.0 - 2019-09-29
Breaking Changes
- Upgraded to Laravel
v6.x
, Symfonyv4.3.x
and upgraded various other dependencies.
Non-breaking Changes
- Added
InteractsWithRedis
helper trait to theLaravelTestHelper
.
- Removed custom
JsonException
(deprecated), inJson
utility. Now defaults to php's nativeJsonException
.
2.3.0 - 2019-07-28
- Now supporting Symfony Console version 4.3.x, #2
2.2.0 - 2019-05-05
- Http Client package, a wrapper for Guzzle Http Client, offering multiple "profile" based client instances, which can be configured via a
configs/http-clients.php
configuration file.
- Upgraded to codeception
v3.0.x
(dev dependency) and replaced deprecated assertions.
2.1.0 - 2019-04-14
- Simplified the bitmask operation for the
\Aedart\Utils\Json
.
2.0.0 - 2019-02-28
- Minimum required PHP version set to
v7.3.0
- Main dependencies changed to Laravel
v5.8.x
, Symfonyv4.2.x
and Orchestra Testbenchv.3.8.x
\Aedart\Utils\Json
automatically setsJSON_THROW_ON_ERROR
bitmask option, if not setAedart\Utils\Exceptions\JsonEncoding
now inherits fromJsonException
- Replaced deprecated
PHPUnit_Framework_MockObject_MockObject
with new\PHPUnit\Framework\MockObject\MockObject
, inTraitTester
- Deprecated
\Aedart\Contracts\Utils\Exceptions\JsonEncodingException
, will be removed in next major version - Deprecated
Aedart\Utils\Exceptions\JsonEncoding
. Use nativeJsonException
instead
1.0.0 - 2018-11-10
- Please review commits on GitHub