Skip to content

Releases: woohoolabs/yin

4.0.0-beta1

19 Jan 11:01
4.0.0-beta1
defa403
Compare
Choose a tag to compare
4.0.0-beta1 Pre-release
Pre-release

ADDED:

  • JSON:API 1.1 related features:
    • Partial support for Profiles
    • Support for type links in errors
  • Resources can also use the $object property to access the object which is being transformed
  • Separate classes for the different types of links instead of the generic Links class
    • DocumentLinks
    • ResourceLinks
    • RelationshipLinks
    • ErrorLinks
  • New capabilities related to pagination:
    • #70: Better support for query parameters in pagination links
    • PaginationFactory class to decouple Pagination class instantiation from the request
    • JsonApi::getPaginationFactory() method to make it easier to retrieve the Pagination Factory
    • FixedCursorBasedPagination class which preserves the original behaviour of the changed CursorBasedPagination
    • FixedCursorBasedPaginationProviderTrait for using it in connection with FixedCursorBasedPagination
    • FixedPageBasedPaginationLinkProviderTrait for using it in connection with FixedPageBasedPagination
  • New capabilities related to relationships:
    • ResponseInterface::hasToOneRelationship() to determine if a specific To-One relationship exists
    • ResponseInterface::hasToManyRelationship() to determine if a specific To-Many relationship exists

CHANGED:

  • Updated justinrainbow/json-schema to v5.2
  • Documents should use the $object property instead of $domainObject (BREAKING CHANGE)
  • Links are used strictly according to the spec (BREAKING CHANGE):
    • AbstractSuccessfulDocument::getLinks() returns ?DocumentLinks instead of ?Links
    • AbstractErrorDocument::getLinks() returns ?DocumentLinks instead of ?Links
    • ErrorDocument::getLinks() returns ?DocumentLinks instead of ?Links
    • ErrorDocument::setLinks() expects a parameter of ?DocumentLinks type instead of ?Links
    • AbstractResource::getLinks() returns ?ResourceLinks instead of Links
    • AbstractRelationship::getLinks() returns ?RelationshipLinks instead of Links
    • AbstractRelationship::setLinks() expects a parameter of ?RelationshipLinks type instead of Links
    • Error::getLinks() returns ErrorLinks instead of Links
    • Error::setLinks() expects a parameter of ErrorLinks instead of Links
  • Improvements related to JsonApiExceptionInterface (BREAKING CHANGE):
    • JsonApiExceptionInterface now extends Throwable
    • JsonApiExceptionInterface::getErrorDocument() must return an ErrorDocumentInterface instead of an AbstractErrorDocument
  • Improvements related to pagination (BREAKING CHANGE):
    • A $defaultSize constructor parameter was added to CursorBasedPagination to define a default value for the page[size] query parameter
    • Properties and methods of FixedPageBasedPagination became non-nullable
    • Properties and methods of OffsetBasedPagination became non-nullable
    • Properties and methods of PageBasedPagination became non-nullable
    • Methods of PaginationLinkProviderInterface expect a second parameter with a $queryString name
  • Setting the status code and Content-Type header of the JSON:API response is done by the Responder by default instead of Serializers (BREAKING CHANGE):
    • The Responder class sets the status code and the Content-Type header of the response, while custom Serializers can override them optionally
    • SerializerInterface::serialize() only accepts two arguments instead of 3 as the $responseCode parameter was removed
    • JsonSerializer does not set the Content-Type header and the status code of the response anymore
  • Improvements related to relationships (BREAKING CHANGE):
    • ResponseInterface::getToOneRelationship() throws an exception instead of returning null if the relationship doesn't exist
    • ResponseInterface::getToManyRelationship() throws an exception instead of returning null if the relationship doesn't exist
  • The TransformerTrait::fromSqlToIso8601Time() method expects a ?DateTimeZone as its second argument instead of string (BREAKING CHANGE)

REMOVED:

  • The generic Links class (BREAKING CHANGE)
  • Methods related to pagination class instantiation were removed from RequestInterface (BREAKING CHANGE):
    • RequestInterface::getFixedPageBasedPagination()
    • RequestInterface::getPageBasedPagination()
    • RequestInterface::getOffsetBasedPagination()
    • RequestInterface::getCursorBasedPagination()
  • Various deprecated classes (BREAKING CHANGE):
    • WoohooLabs\Yin\JsonApi\Document\AbstractCollectionDocument: use WoohooLabs\Yin\JsonApi\Schema\Document\AbstractCollectionDocument instead
    • WoohooLabs\Yin\JsonApi\Document\AbstractDocument: use WoohooLabs\Yin\JsonApi\Schema\Document\AbstractDocument instead
    • WoohooLabs\Yin\JsonApi\Document\AbstractErrorDocument: use WoohooLabs\Yin\JsonApi\Schema\Document\AbstractErrorDocument instead
    • WoohooLabs\Yin\JsonApi\Document\AbstractSimpleResourceDocument: use WoohooLabs\Yin\JsonApi\Schema\Document\AbstractSimpleResourceDocument instead
    • WoohooLabs\Yin\JsonApi\Document\AbstractSingleResourceDocument: use WoohooLabs\Yin\JsonApi\Schema\Document\AbstractSingleResourceDocument instead
    • WoohooLabs\Yin\JsonApi\Document\AbstractSuccessfulResourceDocument: use WoohooLabs\Yin\JsonApi\Schema\Document\AbstractSuccessfulResourceDocument instead
    • WoohooLabs\Yin\JsonApi\Document\ErrorDocument: use WoohooLabs\Yin\JsonApi\Schema\Document\ErrorDocument instead
    • WoohooLabs\Yin\JsonApi\Transformer\AbstractResourceTransformer: use WoohooLabs\Yin\JsonApi\Schema\Resource\AbstractResource instead
    • WoohooLabs\Yin\JsonApi\Transformer\ResourceTransformerInterface: use WoohooLabs\Yin\JsonApi\Schema\Resource\ResourceInterface instead
    • WoohooLabs\Yin\JsonApi\Schema\Error: use WoohooLabs\Yin\JsonApi\Schema\Error\Error instead
    • WoohooLabs\Yin\JsonApi\Schema\ErrorSource: use WoohooLabs\Yin\JsonApi\Schema\Error\ErrorSource instead
    • WoohooLabs\Yin\JsonApi\Exception\JsonApiException: use WoohooLabs\Yin\JsonApi\Exception\AbstractJsonApiException instead
    • WoohooLabs\Yin\JsonApi\Request\Request: use WoohooLabs\Yin\JsonApi\Request\JsonApiRequest instead
    • WoohooLabs\Yin\JsonApi\Request\RequestInterface: use WoohooLabs\Yin\JsonApi\Request\JsonApiRequestInterface instead
    • WoohooLabs\Yin\JsonApi\Schema\Link: use WoohooLabs\Yin\JsonApi\Schema\Link\Link instead
    • WoohooLabs\Yin\JsonApi\Schema\LinkObject: use WoohooLabs\Yin\JsonApi\Schema\Link\LinkObject instead
  • Various deprecated methods (BREAKING CHANGE):
    • AbstractErrorDocument::getResponseCode() (use AbstractErrorDocument::getStatusCode() instead)
    • RequestValidator::lintBody() (use RequestValidator::validateJsonBody() instead)
    • ResponseValidator::lintBody() (use ResponseValidator::validateJsonBody() instead)
    • ResponseValidator::validateBody() (ResponseValidator::validateJsonApiBody())

FIXED:

  • Issues with 0 and non-numeric values when using built-in pagination objects (PageBasedPagination, FixedPageBasedPagination, OffsetBasedPagination)
  • Various issues found by static analysis
  • Query parameters of pagination links were not encoded properly
  • The page and filter query parameters must have an array value as per the spec
  • Instead of returning null, an exception is thrown when a non-existent relationship is fetched

3.1.0

17 Jan 15:47
3.1.0
2a3f780
Compare
Choose a tag to compare

This is a release with several deprecations in order to ensure forward compatibility with Yin 4.0.

DEPRECATED:

  • Classes related to Documents:
    • WoohooLabs\Yin\JsonApi\Document\AbstractCollectionDocument: use WoohooLabs\Yin\JsonApi\Schema\Document\AbstractCollectionDocument instead
    • WoohooLabs\Yin\JsonApi\Document\AbstractDocument: use WoohooLabs\Yin\JsonApi\Schema\Document\AbstractDocument instead
    • WoohooLabs\Yin\JsonApi\Document\AbstractErrorDocument: use WoohooLabs\Yin\JsonApi\Schema\Document\AbstractErrorDocument instead
    • WoohooLabs\Yin\JsonApi\Document\AbstractSimpleResourceDocument: use WoohooLabs\Yin\JsonApi\Schema\Document\AbstractSimpleResourceDocument instead
    • WoohooLabs\Yin\JsonApi\Document\AbstractSingleResourceDocument: use WoohooLabs\Yin\JsonApi\Schema\Document\AbstractSingleResourceDocument instead
    • WoohooLabs\Yin\JsonApi\Document\AbstractSuccessfulResourceDocument: use WoohooLabs\Yin\JsonApi\Schema\Document\AbstractSuccessfulResourceDocument instead
    • WoohooLabs\Yin\JsonApi\Document\ErrorDocument: use WoohooLabs\Yin\JsonApi\Schema\Document\ErrorDocument instead
  • Classes related to Resources:
    • WoohooLabs\Yin\JsonApi\Transformer\AbstractResourceTransformer: use WoohooLabs\Yin\JsonApi\Schema\Resource\AbstractResource instead
    • WoohooLabs\Yin\JsonApi\Transformer\ResourceTransformerInterface: use WoohooLabs\Yin\JsonApi\Schema\Resource\ResourceInterface instead
  • Classes related to Errors and Exceptions:
    • WoohooLabs\Yin\JsonApi\Schema\Error: use WoohooLabs\Yin\JsonApi\Schema\Error\Error instead
    • WoohooLabs\Yin\JsonApi\Schema\ErrorSource: use WoohooLabs\Yin\JsonApi\Schema\Error\ErrorSource instead
    • WoohooLabs\Yin\JsonApi\Exception\JsonApiException: use WoohooLabs\Yin\JsonApi\Exception\AbstractJsonApiException instead
  • Classes related to the Request:
    • WoohooLabs\Yin\JsonApi\Request\Request: use WoohooLabs\Yin\JsonApi\Request\JsonApiRequest instead
    • WoohooLabs\Yin\JsonApi\Request\RequestInterface: use WoohooLabs\Yin\JsonApi\Request\JsonApiRequestInterface instead
  • Classes related to Links:
    • WoohooLabs\Yin\JsonApi\Schema\Link: use WoohooLabs\Yin\JsonApi\Schema\Link\Link instead
    • WoohooLabs\Yin\JsonApi\Schema\LinkObject: use WoohooLabs\Yin\JsonApi\Schema\Link\LinkObject instead
  • The following methods:
    • AbstractErrorDocument::getResponseCode(): use AbstractErrorDocument::getStatusCode() instead
    • RequestValidator::lintBody(): use RequestValidator::validateJsonBody() instead
    • ResponseValidator::lintBody(): use ResponseValidator::validateJsonBody() instead
    • ResponseValidator::validateBody(): use ResponseValidator::validateJsonApiBody() instead

3.0.2

12 Feb 09:23
3.0.2
65e6bc1
Compare
Choose a tag to compare

FIXED:

  • #69: Fatal error when providing invalid types in fields, include and sort query parameters

2.0.6

06 Feb 16:00
2.0.6
39976cd
Compare
Choose a tag to compare

FIXED:

  • #66: Bug in request header validation
  • #69: Fatal error when providing invalid types in fields, include and sort query parameters

3.0.1

02 Feb 09:31
3.0.1
a400334
Compare
Choose a tag to compare

CHANGED:

  • Return the included array even when it is empty if the include parameter is supplied
  • PHPUnit 7.0 is minimally required to run tests

FIXED:

  • #66: Bug in request header validation
  • #68: Fix fatal error when resource ID is not a string

2.0.5

31 Jan 20:37
2.0.5
efb8703
Compare
Choose a tag to compare

FIXED:

  • #68: Fix fatal error when resource ID is not a string

3.0.0

21 Nov 11:05
3.0.0
9922257
Compare
Choose a tag to compare

CHANGED:

  • Increased minimum PHP version requirement to 7.1
  • ExceptionFactoryInterface methods must return JsonApiExceptionInterface (BREAKING)
  • AbstractDocument::getJsonApi() and AbstractDocument::getLinks() return types must be declared (BREAKING)
  • ResourceTransformerInterface::getLinks() return type must be declared (BREAKING)

REMOVED:

  • TransformerTrait::toBool() and TransformerTrait::toInt() methods

FIXED:

  • Some minor type declaration-related issues

3.0.0-beta1

14 Sep 07:32
3.0.0-beta1
bfd5fec
Compare
Choose a tag to compare
3.0.0-beta1 Pre-release
Pre-release

CHANGED:

  • Increased minimum PHP version requirement to 7.1
  • ExceptionFactoryInterface methods must return JsonApiExceptionInterface (BREAKING)
  • AbstractDocument::getJsonApi() and AbstractDocument::getLinks() return types must be declared (BREAKING)
  • ResourceTransformerInterface::getLinks() return type must be declared (BREAKING)

REMOVED:

  • TransformerTrait::toBool() and TransformerTrait::toInt() methods

FIXED:

  • Some minor type declaration-related issues

2.0.4

13 Sep 18:47
2.0.4
7bf6a6e
Compare
Choose a tag to compare

ADDED:

  • Possibility to define the $code constructor argument of Exceptions when instantiating JsonApiExceptions

2.0.3

24 Aug 20:28
2.0.3
783ca47
Compare
Choose a tag to compare

CHANGED:

  • Updated JSON:API schema to the latest version

FIXED:

  • #64: Body sent via POST is not retrievable