| schema | by dg | DOCS | | | |
| schema | by dg | added Expect::enum() | | | |
| schema | by dg | added Expect::listable() | | | |
| schema | by dg | DOCS | | | |
| schema | by dg | added Expect::tuple() | | | |
| schema | by dg | removed support for key PreventMerging, removed Helpers::merge() (BC break) | | | |
| schema | by dg | AnyOf::merge() merges layers according to the matched alternative instead of blindly (BC break) | | | |
| schema | by dg | Structure::merge() driven by MergeMode; numeric-key appending decoupled from otherItems (BC break) | | | |
| schema | by dg | added MergeMode enum, mergeMode() and mergeWith(); Type::merge() merges arrays only according to the schema (BC break) | | | |
| schema | by dg | Type: mergeDefaults() are disabled by default (BC break) [Closes #28, Closes #31] | | | |
| schema | by dg | Schema::merge() receives Context and reports merge errors through it (BC break) | | | |
| schema | by dg | used #Deprecated | | | |
| schema | by dg | Expect::from() works with class names | | | |
| schema | by dg | Expect::from() removed support for phpDoc annotations (BC break) | | | |
| schema | by dg | Schema: added return type hints (BC break) | | | |
| schema | by dg | opened 2.0-dev | | | |
| schema | by dg | added schema inspection (describe()) and JSON Schema export Type, Structure and AnyOf report what they accept as a plain array with a closed Kind vocabulary; child schemas are reported as they are. TypeExpression is the single translator of the Expect::type() language into that array and follows Validators::is() exactly (an unknown name is a class, 'int[]' is any iterable of ints, legacy validator names are Other). JsonSchema::export() is a pure function over describe() and refuses PHP-only types instead of emitting a schema the Processor would reject. Everything is @internal for now so the vocabulary can still change. | | | |
| schema | by dg | added description() to schema elements | | | |
| schema | by dg | Base: multiple before() handlers are chained instead of silently replaced | | | |
| schema | by dg | opened 1.4-dev | | | |
| schema | by dg | Type: nullable arrays are not coerced from null to empty array | | | |
| schema | by dg | Message: unknown placeholders are left untouched | | | |
| schema | by dg | Type: items with invalid keys are dropped instead of collapsing into one key | | | |
| schema | by dg | Processor: getWarnings() can be called before processing | | | |
| schema | by dg | Processor: fixed typo in method name throwErrors() | | | |
| schema | by dg | Helpers::getCastStrategy() reports target class when instantiation fails | | | |
| schema | by dg | Helpers::getCastStrategy() supports backed enums | | | |
| schema | by dg | Structure: deprecated() does not warn when item is missing in input | | | |
| schema | by dg | AnyOf: fixed loss of dynamics and skipDefaults in inner context | | | |
| schema | by dg | CI: switched Coveralls upload to the official action The php-coveralls phar is replaced by coverallsapp/github-action, which resolves the token and the absolute paths in the Clover report on its own, so tests/.coveralls.yml is no longer needed. Coverage is now uploaded even when tests crash under phpdbg. Being phpdbg-compatible is not a goal, but until now the failing step aborted the job before the upload ever ran. The job-level continue-on-error is gone, so genuine failures, including a rejected upload, are visible. | | | |
| application | by dg | Presenter::argsToParams() now distinguish between NULL and '' | | | |
| application | by dg | removed {templatePrint} | | | |