packages feed

aeson-optics-1.2: CHANGELOG.md

# 1.2

Release corresponding to [`lens-aeson-1.2`](https://hackage.haskell.org/package/lens-aeson-1.2)
API changes.

* Require `aeson-2.0.3.*` and `optics-core-0.4.1` or greater.
* Drop support for GHC-8.0
* Change the types of `_Object`, `key`, and `members`:

  ```diff
  -_Object :: Prism' t (HashMap Text Value)
  +_Object :: Prism' t (KeyMap Value)

  -key :: AsValue t => Text -> AffineTraversal' t Value
  +key :: AsValue t => Key  -> AffineTraversal' t Value

  -members :: AsValue t => IndexedTraversal' Text t Value
  +members :: AsValue t => IndexedTraversal' Key  t Value
  ```

  This mirrors similar changes made in `aeson-2.0.*`, where the type of
  `Object`'s field was changed from `HashMap Text Value` to `KeyMap Value`.

  The `Ixed Value` instance changes similarly:

  ```diff
  -type instance Index Value = Text
  +type instance Index Value = Key
  ```
* Remove `Primitive` and `AsPrimitive`, since https://tools.ietf.org/html/rfc7159
  de-emphasized the notion of primitive versus composite JSON values.
  * The `AsPrimitive` methods (`_Value`, `_String`, and `_Bool`) are now
    `AsValue` methods.
  * `_Number`'s default signature, `Bool_`, `String_`, and `Null_` now have an
    `AsValue` constraint.
* Add an `IsKey` class, whose method `_Key` is an `Iso` for converting values
  to and from a `Key`.

# 1.1.1

- Support `aeson-2.0.0.0`: add instances for `KeyMap`.