Skip to content

Latest commit

 

History

History
319 lines (253 loc) · 9.81 KB

CHANGELOG.md

File metadata and controls

319 lines (253 loc) · 9.81 KB

Changelog

v0.18.0

Breaking

  • Fixed warning in Elixir 1.14 for using Application.get_env/3 in module body. This required Application.compile_env/3 which is only available in Elixir 1.10+

v0.17.0

Breaking

  • Empty relationships with links are now handled properly. Instead of returning a relationship resource with a broken link, we now remove the broken links from the serialized "relationships" key. - #340

Bug fixes

  • Allow "import" to be used as a relationship name - #336

v0.16.0

Breaking

  • Bump dependencies and remove support for Elixir < 1.7
  • Raise exception when using a reserved keyword in attributes/1 macro
  • Removed JaSerializer generators in favor of documenting how to use with Phoenix generators.

v0.15.0

Features

  • Add optional support for camelCase key format as recommended by JSON:API v1.1 - #316/#317
  • Make JaSerializer.TopLevel.Builder.normalize_includes/1 public - #323

Bug fixes

  • Allow accept header with quality param - #320
  • Include relationships in sparse field definition - #324

Breaking

  • Don't render empty relationships - #311
  • Omit prev/next links when current page is > last page - #317
  • Don't raise AssociationNotLoadedError if belongs to relationship can be determined. - #322

The following workaround is no longer needed:

has_one :city, serializer: MyApp.CityView

def city(%{city: %Ecto.Association.NotLoaded{}, city_id: nil}, _conn), do: nil
def city(%{city: %Ecto.Association.NotLoaded{}, city_id: id}, _conn), do: %{id: id}
def city(%{city: city}, _conn), do: city

v0.14.1

Bug fixes

  • Fix application start up w/out Poison - #310

v0.14.0

Breaking

  • Only include attributes key when there are attributes present - #297
  • Serializer attribute and relationship function overrides must be public. Previously there was an untested/undocumented way of overriding attributes with private functions, but this is no longer supported.

In other words, change this:

defmodule PostSerializer do
  use JaSerializer, dsl: true
  attributes [:html]

  defp html(post, _conn) do
    Earmark.to_html(post.body)
  end
end

to this:

defmodule PostSerializer do
  use JaSerializer, dsl: true
  attributes [:html]

  def html(post, _conn) do
    Earmark.to_html(post.body)
  end
end

Features

  • Read key format config value at runtime - #265

Bug fixes

  • Build pagination URLs using base url and request path - #281
  • Issue rendering some ecto changeset errors - #275
  • Handle the case where the end of a link is a URI fragment - #293
  • Added missing @callback in Serializer - #294
  • Consistent relation override - #299
  • Fix compilation error when defining already inlined by compiler methods - #304

Misc

  • Add .formatter.exs for consistent formatting
  • Fixed compiler warnings
  • Use capture_io in tests to make output less noisy

v0.13.0

Breaking

  • Add JaSerializer.Builder.PaginationLinks (@bcardarella) - #233
    • page_number_key defaults to number instead of page
    • page_size_key defaults to size instead of page-size
    • scrivener_base_url renamed to page_base_url

Features

  • Allow serializing null structs (@juanazam) - #181
  • Preserve ID in to_attributes/1 (@xtian) - #254
  • Allow API to produce pluralized types rather than having to configure each serializer one by one (@bcardarella) - #225
  • Generator task for Phoenix 1.3 (@mikeni) - #243

Bugfixes

  • Fixed formatting of multi-word relationship path keys (@yogipatel) - #230
  • Page links are merged in correct order (@qbart) - #251
  • Fix an edge case with pagination links (@marpo60) - #252

Performance

  • Improved performance of inline DSL attributes (@DocX) - #245

Documentation

  • Fixes and improvements by @peterberkenbosch, @petehamilton, @beerlington

v0.12.0

  • Breaking
    • Elixir 1.1 and earlier no longer supported.
  • Features
    • Elixir 1.4 support. (@yordis, @joshuataylor, @asummers)
    • Add config :ja_serializer, scrivener_base_url: support (@geolessel)
    • Support custom key deserialization (@vasilenko)

v0.11.2

  • Features
    • Allow customization of pagination params in Scrivener integration (@scrogson)
  • Bugfixes
    • Add json api version to error responses. (@nmcalabroso)
    • Support umbrella apps in generators. (@gullitmiranda)
    • Support {:array, :integer} type ecto fields in error serializer (@henriquecf)

v0.11.1

  • Bugfixes
    • Handle port numbers in link urls. (@MishaConway)
  • Documentations
    • Fixes and improvements by @archSeer, @JoshSmith, and @rynam0
  • Misc
    • Cleaned up Credo reported code inconsistencies

v0.11.0

  • Breaking
    • The results of JaSerializer.format/4 now returns maps consistently keyed with binaries instead of mixed binaries and atoms. This is not an issue when rendering to json, but any direct testing of format/4 calls may need to be updated. (@bcardarella)
  • Bugfixes
    • Ensure deep linked include query params are correctly rendered. (@KronicDeth)
    • Use build_conn/0 instead of conn/0 in Phoenix test generator (@dustinfarris)
    • Properly parse nill relationships when de-serializing params (@kaermorchen)
  • Features
    • adds :relationships to serialization opts to skip serializing relationships. Defaults to true. (@bcardarella)
    • Adds preload/3 hook for preloading relationship data.
    • Support passing more fields to EctoErrorSerializer (@nurugger07)

v0.10.1

  • Features
    • Upgrade Scrivener for Ecto 2.0 & Scrivener support (@avitex)
  • Bugfixes
    • Fix ecto error serialization for both 2.0 and 1.0 support (@KronicDeth)
  • Deprecations
    • No longer supports Scrivener 1.x

v0.10.0

  • Features
    • There is a full behaviour for serializing, including relationships, with a DSL on top.
    • Adds type/2 hook for defining the object type.
  • Performance
    • Scrivener link integration are now faster (@benfalk)
    • Parsing fields params is now more efficient (@benfalk)
  • Deprecations
    • Prefer type/2 callback over type/0.
    • Returning functions from type/0 deprecated if favor of using type/2.
    • MySerializer.format/3 deprecated in favor of JaSerializer.format/4.
  • Bugfixes
    • Fix generator imperative assignment warning. (@parndt)
    • Fix default dsl link imperative assignment warning. (@itsgreggreg)

v0.9.0

  • Features
    • Allow type to be set dynamically #94 (@benfalk)
    • Add JaSerializer.Params.to_attributes/1 for merging relationships and attributes
    • Add generator to generate json-api spec phoenix controllers and tests. (@Dreamer009)
  • Bugfixes
    • Don't render all pagination links when only one page of results #96 (@adamboas)
    • Relax Ecto and Plug dependencies. (Ecto 2.0 support!)

v0.8.1

  • Performance
    • Improved performance of included (sideloaded) relationships. #86 (@dgvncsz0f)

v0.8.0

  • Breaking
    • You must now set the Phoenix :format_encoder for json-api to Poison in config.exs. Phoenix now handles conversion from map to json string. See README for details.
  • Features
    • Allow Poison 2.0
  • Bugfixes
    • Allow application/*, / and empty accept headers without returning 406.
    • Count errors now display full message in description.
    • Fixed serializing lists - #78

v0.7.1

  • Features
    • Param parsing now happens via a protocol for extensibility.

v0.7.0

  • Breaking
    • Pagination, sorting, filtering query param keys are now formatted with the configured key_format. This means the API outputs and expects dasherized by default. (@linstula)
  • Features
    • Deprecations messages now consistently formatted and contain a stack trace. (@derekprior)

v0.6.3

  • Features
    • Type is now formatted as underscore or dasherized, same as your key setting. (@linstula)

v0.6.2

  • Features
    • Updates error serializer to include field name in description. (@cjbell)
  • Bugfixes
    • Retain type information when deserializing. (@linstula)
    • Fix pipe warning in Elixir 1.2 (@bortevik)

v0.6.1

  • Features
    • Allow query params in link formatting. (@simonprev)
    • Deps added to application for exrm. (@dmarkow)
  • Bugfixes
    • format_key typo in ecto_error_serializer (@gordonbisner)

v0.6.0

  • Features
    • Support json-api spec include query param. (@green-arrow)
    • Support json-api spec fields query param. (@green-arrow)
    • Add meta info support

v0.5.0

  • Features:
    • Support custom ids in relationships. (@green-arrow)
    • Adds error rendering support to Phoenix view.
  • Deprecations:
    • Use key serializer instead of include when defining relationships.
  • Dependencies:
    • Ecto is now a required (non-optional) dependency.

v0.4.0

  • Features:
    • Adds support for pagination links w/ Scrivener or via opts. (@vysakh0)
  • Bugfixes:
    • Properly serialize empty relationships. (@dmarkow)

v0.3.1

  • Bugfixes
    • Adds optional Ecto dependency to fix compilation issue.

v0.3.0

  • Breaking:
    • Raises exception if ecto relationship is not pre-fetched.
  • Features:
    • Adds JaSerializer.ErrorSerializer
    • Adds JaSerializer.EctoErrorSerializer
    • Pre-defines formats for Ecto built in types.

v0.2.0

  • Features:
    • Add Phoenix integration w/ JaSerializer.PhoenixView.
    • Infer type from module name.
    • Add attributes/2 callback w/ default implementation based on attributes/1 macro.
    • Add JaSerializer.ContentTypeNegotiation plug for setting content type.
    • Add JaSerializer.Deserializer plug for param normalization.
  • Deprecations:
    • Remove serialize macro in favor of type/0 callback.

v0.1.2

  • Bugfix
    • Added non-fallback formatters for simple data types to improve out of the box performance.

v0.1.1

  • Bugfixes:
    • Fix issues w/ include chains that resulted in infinite loops.

v0.1.0

  • Features:
    • Add config option for formatting keys as underscored or dasherized.
  • Bugfixes:
    • Serialize include chains w/o duplicates.

v0.0.1

  • Initial release.