All Versions
31
Latest Version
Avg Release Cycle
-
Latest Release
-

Changelog History
Page 3

  • v1.0.0 Changes

    🔄 Changes

    🚀 A bunch of changes were made in this release with some brand new functionality, so I decided to bump version to 1.0.0, finally. Exop has been working since 2016 on various projects, in production. I think it means something and I can say it is production-ready :)

    • Exop.Chain helps you to organize a number of operations into an invocation chain
    • Exop.Fallback handles your operations fails (error-tuple results)
    • Exop.Policy was simplified
    • ⚡️ minor codebase updates
    • 📄 docs were reviewed
  • v0.5.1 Changes

    🔄 Changes

    • An operation's process/1 now takes a map of parameters (contract) instead of a keywords list (This will help you to pattern-match them)
    • 👕 Credo was wiped out (with annoying warning on @lint)
    • Code was formatted with elixir formatter
  • v0.5.0 Changes

    🔄 Changes

    • 🆕 New list_item parameter check.
  • v0.4.8 Changes

    🔄 Changes

    • 🛠 Fixed required check when a struct was checked with inner.
  • v0.4.7 Changes

    🔄 Changes

    • 🛠 Fixed required check when false was treated as the absence of a parameter.
  • v0.4.6 Changes

    🔄 Changes

    • Does not validate nil parameters if they are not required. For example:
      defmodule Operation do
        use Exop.Operation
    
        parameter :value, type: %MyStruct{}
    
        # ...
      end
    
      # Old versions
      Operation.run([]) # {:error, {:validation, %{value: ["is not expected struct"]}}
    
      # This version
      Operation.run([]) # {:ok, ...}
    

    In previous versions such code returns validation error, because nil is not a MyStruct struct (even if it is not required by default).

    In current version such behaviour is fixed and Exop will not run validations for nil parameters if they are not required.

  • v0.4.5 Changes

    🔄 Changes

    • equals check: Checks whether a parameter's value exactly equals given value (with type equality).
      parameter :some_param, equals: 100.5
    
  • v0.4.4 Changes

    🔄 Changes

    • run/1 output: If your process/1 function returns a tuple {:ok, _your_result_} Exop will not wrap this output into former {:ok, _output_} tuple.

    So, if process/1 returns {:ok, :its_ok} you'll get exactly that tuple, not {:ok, {:ok, :its_ok}}.

    (run!/1 acts in the same manner with respect of it's bang nature)

  • v0.4.3 Changes

    🔄 Changes

    • 🌲 Log improvements: Logger provides operation's module name if a contract validation failed. Like: 14:21:05.944 [warn] Elixir.ExopOperationTest.Operation errors: param1: has wrong type param2: has wrong type
    • 📄 Docs ExDocs (hex docs) were mostly provided. Will be useful for some IDEs/editors plugins usage (with docs helpers) and Dash users (like me).
  • v0.4.2 Changes

    🔄 Changes

    • func/2 check: Custom validation function now receives two arguments: the first is a contract of an operation (parameters with their values), the second - the actual parameter value to check. So, now you can validate a parameter depending on other parameters values.