Changelog
September 6, 2025 ยท View on GitHub
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.
Unreleased
For a full diff see 4.10.1...main.
4.10.1
For a full diff see 4.10.0...4.10.1.
Fixed
- Updated branch alias (#1226), by @localheinz
4.10.0
For a full diff see 4.9.0...4.10.0.
Changed
- Allowed installation on PHP 8.5 (#1225), by @localheinz
4.9.0
For a full diff see 4.8.0...4.9.0.
Changed
- Adjusted
SchemaNormalizerto allow pruning empty sections when the schema declares them as not required (#1053), by @fredden - Adjusted
Vendor\Composer\VersionConstraintNormalizerto correctly usedev-prefixes and-devsuffixes (#1055), by @fredden - Adjusted
Vendor\Composer\VersionConstraintNormalizerto normalize and (if necessary) combine version constraints refering to extensions (#1185), by @fredden - Adjusted
Vendor\Composer\VersionConstraintNormalizerto normalize version constraints that are combined with*to*(#1186), by @fredden
4.8.0
For a full diff see 4.7.0...4.8.0.
Changed
4.7.0
For a full diff see 4.6.0...4.7.0.
Added
- Added support for PHP 8.4 (#1195), by @localheinz
4.6.0
For a full diff see 4.5.0...4.6.0.
Changed
- Adjusted
Vendor\Composer\VersionConstraintNormalizerto replacexandXwildcards with*(#1052), by @fredden - Allowed installation on PHP 8.4 (#1171), by @localheinz
4.5.0
For a full diff see 4.4.1...4.5.0.
Changed
- Required
ergebnis/json:^1.2.0(#1073), by @localheinz - Required
ergebnis/json-printer:^3.5.0(#1074), by @localheinz - Required
ergebnis/json-pointer:^3.4.0(#1075), by @localheinz - Required
ergebnis/json-schema-validator:^4.2.0(#1076), by @localheinz - Added support for PHP 8.3 (#1077), by @localheinz
- Added support for PHP 7.4 (#1079), by @localheinz
4.4.1
For a full diff see 4.4.0...4.4.1.
Fixed
- Stopped sorting an item in
repositorieswhen it disables packagist (#1039), by @localheinz
4.4.0
For a full diff see 4.3.0...4.4.0.
Changed
- Started removing
vprefixes from version constraints (#1027), by @fredden - Started sorting items in the
excludeandonlyproperties of items listed in therepositoriessection (#1001), by @fredden
4.3.0
For a full diff see 4.2.0...4.3.0.
Changed
- Sort
allow-pluginsandpreferred-installas sensibly as is feasible (#980), by @fredden - Adjusted
Vendor\Composer\VersionConstraintNormalizerto remove overlapping individual versions too (#982), by @fredden - Added support for PHP 8.3 (#988), by @localheinz
- Required
ergebnis/json-printer:^3.4.0(#989), by @dependabot - Required
ergebnis/json:^1.1.0(#991), by @dependabot - Required
ergebnis/json-schema-validator:^4.1.0(#992), by @dependabot
4.2.0
For a full diff see 4.1.0...4.2.0.
Changed
- Dropped support for PHP 8.0 (#917), by @localheinz
- Adjusted
Vendor\Composer\VersionConstraintNormalizerto prefer tilde operators (~) over wildcard operators (*), and caret operators (^) over tilde operators (~) (#756), by @fredden
4.1.0
For a full diff see 4.0.2...4.1.0.
Changed
- Adjusted
Vendor\Composer\VersionConstraintNormalizerto remove extra spaces in inline aliases (#889), by @fredden - Adjusted
Vendor\Composer\VersionConstraintNormalizerto remove useless inline aliases (#889), by @fredden
Fixed
- Adjusted
SchemaNormalizerto account for objects with string and integer-like properties (#868), by @alexis-saransig-lullabot and @fredden - Adjusted
SchemaNormalizerto account for objects where schema describes additional properties (#873), by @fredden and @localheinz
4.0.2
For a full diff see 4.0.1...4.0.2.
Fixed
- Adjusted
Vendor\Composer\VersionConstraintNormalizerto sort versions naturally (#863), by @localheinz
4.0.1
For a full diff see 4.0.0...4.0.1.
Fixed
- Adjusted
Vendor\Composer\ComposerJsonNormalizerto stop sortingrepositories(#858), by @localheinz - Reverted inlining
Vendor\Composer\BinNormalizer(#860), by @localheinz - Partially reverted removal of
Vendor\Composer\ConfigHashNormalizerto ensureconfigis sorted by ket (#861), by @localheinz
4.0.0
For a full diff see 3.0.0...4.0.0.
Added
- Added
FormatNormalizer(#781), by @localheinz
Changed
- Dropped support for PHP 7.4 (#757), by @localheinz
- Required
ergebnis/json-schema-validator:^4.0.0([#771]), by @localheinz - Allowed configuring the
Normalizer\SchemaNormalizerto exclude properties from being sorted (#774), by @localheinz - Adjusted
Vendor\Composer\BinNormalizer,Vendor\Composer\PackageHashNormalizer,Vendor\Composer\VersionConstraintNormalizer, andSchemaNormalizerto encode JSON withJSON_PRETTY_PRINTflag (#795), by @localheinz - Adjusted
Vendor\Composer\BinNormalizer,Vendor\Composer\PackageHashNormalizer,Vendor\Composer\VersionConstraintNormalizer, andSchemaNormalizerto encode JSON withJSON_UNESCAPED_SLASHESflag (#801), by @localheinz - Adjusted
Vendor\Composer\BinNormalizer,Vendor\Composer\PackageHashNormalizer,Vendor\Composer\VersionConstraintNormalizer, andSchemaNormalizerto encode JSON withJSON_UNESCAPED_UNICODEflag (#802), by @localheinz - Adjusted
Vendor\Composer\ComposerJsonNormalizerto reject JSON when it is not an object (#804), by @localheinz - Adjusted
Vendor\Composer\ComposerJsonNormalizerto composeWithFinalNewLineNormalizer([#806]), by @localheinz - Adjusted
Vendor\Composer\VersionConstraintNormalizerto skip normalization of version constraints when they can not be parsed byComposer\Semver\VersionParser(#813), by @fredden and @localheinz - Adjusted
Vendor\Composer\VersionConstraintNormalizerto sort versions in ascending order (#816), by @fredden - Adjusted
Vendor\Composer\VersionConstraintNormalizerto normalize version constraints separators inandconstraints from space () or comma (,) to space () (#819), by @fredden - Adjusted
Vendor\Composer\VersionConstraintNormalizerto remove overlapping version constraints inorversion constraints (#850), by @fredden - Adjusted
Vendor\Composer\VersionConstraintNormalizerto remove duplicate version constraints (#856), by @localheinz
Fixed
- Adjusted
Vendor\Composer\ComposerJsonNormalizerto stop sortingscripts.auto-scripts(#776), by @localheinz - Adjusted
Vendor\Composer\ComposerJsonNormalizerto stop sortingextra.installer-paths(#777), by @localheinz - Adjusted
Vendor\Composer\ComposerJsonNormalizerto stop sortingconfig.allow-plugins(#778), by @localheinz - Adjusted
Vendor\Composer\ComposerJsonNormalizerto stop sortingconfig.preferred-install(#779), by @localheinz - Adjusted
Vendor\Composer\ComposerJsonNormalizerto stop sorting children ofextra.patches(#780), by @localheinz
Removed
- Started using
ergebnis/jsonand removedJsonandException\InvalidJsonEncoded(#772), by @localheinz - Removed
Vendor\Composer\ConfigHashNormalizer(#775), by @localheinz - Removed
AutoFormatNormalizer(#793), by @localheinz - Removed
FixedFormatNormalizer(#794), by @localheinz - Inlined and removed
Vendor\Composer\BinNormalizer(#805), by @localheinz
3.0.0
For a full diff see 2.2.0...3.0.0.
Changed
- Required
ergebnis/json-schema-validator:^3.0.0(#666), by @dependabot - Renamed
Exception\ExceptionInterfacetoException\Exception(#667), by @localheinz - Removed
Exceptionsuffix from all exceptions (#668), by @localheinz - Renamed
NormalizerInterfacetoNormalizer(#669), by @localheinz - Renamed
Format\FormattertoFormat\DefaultFormatter(#672), by @localheinz - Renamed
Format\FormatterInterfacetoFormat\Formatter(#673), by @localheinz - Required
ergebnis/json-pointer:^3.0.0andergebnis/json-schema-validator:^3.1.0(#697), by @localheinz - Required
ergebnis/json-pointer:^3.1.0(#698), by @dependabot - Required
justinrainbow/json-schema:^5.2.12(#705), by @dependabot
Fixed
- Adjusted
ConfigHashNormalizerto sort keys correctly (#723), by [@fredded]
2.2.0
For a full diff see 2.1.0...2.2.0.
Changed
- Stopped checking whether
typeproperty in schema is set toarrayorobject(#632), by @localheinz - Adjusted
SchemaNormalizerto normalize additional object properties (#639), by @localheinz - Adjusted
SchemaNormalizerto normalize array values for which schema does not declare item schema (#641), by @localheinz
2.1.0
For a full diff see 2.0.0...2.1.0.
Changed
- Adjusted
SchemaNormalizerto supportanyOf(#623), by @localheinz
2.0.0
For a full diff see 1.0.3...2.0.0.
Changed
- Dropped support for PHP 7.2 (#564), by @localheinz
- Dropped support for PHP 7.3 (#573), by @localheinz
- Renamed
Format::__toString(),Indent::__toString(), andJson::__toString()toFormat::toString(),Indent::toString(), andJson::toString(), requiring consumers to explicitly invoke methods instead of allowing to cast tostring(#589), by @localheinz - Started using the
SchemaValidatorprovided byergebnis/json-schema-validator(#595), by @localheinz - Renamed
Format\JsonEncodeOptions::value()toFormat\JsonEncodeOptions::toInt()(#603), by @localheinz - Extracted
Format\Format::create()as named constructor and reduced visibility of__constructtoprivate(#608), by @localheinz - Stopped composing
Format\FormatintoJson(#616), by @localheinz - Renamed
FinalNewLineNormalizertoWithFinalNewLineNormalizer(#618), by @localheinz - Renamed
NoFinalNewLineNormalizertoWithoutFinalNewLineNormalizer(#619), by @localheinz
Fixed
- Updated
justinrainbow/json-schema(#517), by @dependabot - Stopped sorting the newly added
allow-pluginsconfiguration (#590), by @dependabot
Removed
- Removed
Validator\Result,Valdiator\SchemaValidator, andValidator\SchemaValidatorInterface(#597), by @dependabot
1.0.3
For a full diff see 1.0.2...1.0.3.
Fixed
- Adjusted
Vendor\Composer\PackageHashNormalizerto take into account the newly adddedcomposer-plugin-apias platform requirement (#463), by @localheinz
1.0.2
For a full diff see 1.0.1...1.0.2.
Fixed
- Adjusted
Vendor\Composer\ConfigHashNormalizerto take into account the full property path, not only the property name (#429), by @localheinz
1.0.1
For a full diff see 1.0.0...1.0.1.
Fixed
- Adjusted
Vendor\Composer\ConfigHashNormalizerto ignore thepreferred-installhash (#425), by @localheinz
1.0.0
For a full diff see 0.14.1...1.0.0.
Changed
- Adjusted
Vendor\Composer\ConfigHashNormalizerto recursively sort hashes by key (#424), by @localheinz
0.14.1
For a full diff see 0.14.0...0.14.1.
Fixed
- Adjusted
Vendor\Composer\ConfigHashNormalizerto continue normalizing properties when a property has an empty value (#423), by @localheinz
0.14.0
For a full diff see 0.13.1...0.14.0.
Added
- Extracted an
Indent::CHARACTERSconstant that exposes a map of indent styles to indent characters (#384), by @localheinz
0.13.1
For a full diff see 0.13.0...0.13.1.
Changed
- Dropped support for PHP 7.1 (#335), by @localheinz
0.13.0
For a full diff see 0.12.0...0.13.0.
Added
- Added support for PHP 8.0 (#308), by @localheinz
0.12.0
For a full diff see 0.11.0...0.12.0.
Added
- Added
SchemaValidator::validate(), which returns aResultcomposing validation error messages (#268), by @localheinz
Deprecated
- Deprecated
SchemaValidator::isValid()(#269), by @localheinz
0.11.0
For a full diff see 0.10.1...0.11.0.
Added
- Merged in normalizers from
ergebnis/composer-json-normalizer(#203), by @localheinz
Removed
- Removed the
ChainUriRetriever(#202), by @localheinz
0.10.1
For a full diff see 0.10.0...0.10.1.
Fixed
- Brought back support for PHP 7.1 (#191), by @localheinz
0.10.0
For a full diff see 0.9.0...0.10.0.
Added
- Added a
ChainUriRetrieverwhich allows specifying multiple URI retrievers (#102), by @localheinz - Added this changelog (#103), by @localheinz
Changed
-
Allowing injection of a
UriRetrieverinto theSchemaNormalizer, and defaulting to aChainUriRetrieverwhich composesFileGetContentsandCurlURI retrievers (#104), by @localheinz -
Dropped
nulldefault values of constructor arguments ofAutoFormatNormalizer,FixedFormatNormalizer,Formatter,IndentNormalizerto expose hard dependencies (#109), by @localheinz -
Dropped nullable return type declaration from
ChainUriRetriever::getContentType(), defaulting to an emptystringwhenChainUriRetriever::retrieve()wasn't invoked yet (#132), by @localheinz -
Started using
ergebnis/json-printerinstead oflocalheinz/json-printer(#176), by @localheinz -
Renamed vendor namespace
LocalheinztoErgebnisafter move to @ergebnis (#181), by @localheinzRun
$ composer remove localheinz/json-normalizerand
$ composer require ergebnis/json-normalizerto update.
Run
$ find . -type f -exec sed -i '.bak' 's/Localheinz\\Json\\Normalizer/Ergebnis\\Json\\Normalizer/g' {} \;to replace occurrences of
Localheinz\Json\NormalizerwithErgebnis\Json\Normalizer.Run
$ find -type f -name '*.bak' -deleteto delete backup files created in the previous step.
Fixed
- Dropped support for PHP 7.1 (#163), by @localheinz
0.9.0
For a full diff see 0.8.0...0.9.0.
Added
- Added
JsonEncodeOptionsvalue object (#93), by @localheinz
Changed
- Turned method on
Formatinto named constructor onIndentvalue object (#94), by @localheinz - Turned method on
Formatinto named constructor onJsonEncodeOptionsvalue object(#95), by @localheinz - Turned method on
Formatinto named constructor onNewLinevalue object (#96), by @localheinz
Removed
- Removed capability to create
Jsonvalue object from decoded data (#88), by @localheinz - Removed
IndentInterface(#89), by @localheinz - Removed
NewLineInterface(#90), by @localheinz - Removed
FormatInterface(#91), by @localheinz - Removed
JsonInterface(#92), by @localheinz
0.8.0
For a full diff see 0.7.0...0.8.0.
Added
- Added named constructor to
Jsonvalue object to allow creation from data (#86), by @localheinz
Changed
- Renamed
InvalidJsonExceptiontoInvalidJsonEncodedException(#85), by @localheinz
Fixed
ExceptionInterfacenow extendsThrowable(#82), by @BackEndTea- Extension
ext/jsonis now explicitly required (#84), by @localheinz
0.7.0
For a full diff see 0.6.0...0.7.0.
Added
- Added
Indentvalue object (#73), by @localheinz - Added
NewLinevalue object (#76), by @localheinz - Added
Jsonvalue object (#64), by @localheinz - Added exceptions (#79), by @localheinz
Changed
- Removed the
Snifferin favour of a named constructor onFormatvalue object (#77), by @localheinz
Fixed
- Added more test cases for sniffing JSON without whitespace (#67), by @localheinz
- Added missing types in a Docblock (#68), by @localheinz
- The
Formatvalue object now rejects mixed tabs and spaces as indent (#69), by @localheinz - Added more test cases for JSON without indent (#72), by @localheinz
- Sniff only pure indents, no mixed spaces and tabs (#71), by @localheinz
0.6.0
For a full diff see 0.5.2...0.6.0.
Added
- Added sniffing of new-line character sequence (#55), by @localheinz
0.5.2
For a full diff see 0.5.1...0.5.2.
Fixed
- Keep resolving references until there are none left (#49), by @localheinz
0.5.1
For a full diff see 0.5.0...0.5.1.
Fixed
- Resolve referenced schema in
oneOfcombination (#47), by @localheinz
0.5.0
For a full diff see 0.4.0...0.5.0.
Added
- Added handling of arrays where schema describes tuple (#37), by @localheinz
- Added handling of arrays were schema has reference definition (#40), by @localheinz
- Added handling of
oneOf(#45), by @localheinz
0.4.0
For a full diff see 0.3.0...0.4.0.
Added
- Extracted
Formatter(#31), by @localheinz
Changed
- Renamed
FormatSniffertoSniffer(#30), by @localheinz
0.3.0
For a full diff see 0.2.0...0.3.0.
Changed
- Require PHP 7.1 (#27), by @localheinz
- Allow to mutate
Formatvalue object (#29), by @localheinz
0.2.0
For a full diff see 0.1.0...0.2.0.
Added
- Added
FixedFormatNormalizer(#17), by @localheinz
0.1.0
For a full diff see 5d8b3e2...0.1.0.
Added
- Added
IndentNormalizer(#1), by @localheinz - Added
FinalNewLineNormalizer(#2), by @localheinz - Added
NoFinalNewLineNormalizer(#3), by @localheinz - Added
JsonEncodeNormalizer(#7), by @localheinz - Added
CallableNormalizer(#8), by @localheinz - Added
ChainNormalizer(#9), by @localheinz - Added
Formatvalue object (#10), by @localheinz - Added
FormatSniffer(#12), by @localheinz - Added
AutoFormatNormalizer(#13), by @localheinz - Added
SchemaNormalizer(#15), by @localheinz