Jexia Semaphore Versions Save

Take control of your data, connect with anything, and expose it anywhere through protocols such as HTTP, GraphQL, and gRPC.

v2.1.0

3 years ago

Quite a lot of new features and fixes were applied :tada:

These are the highlights:

  • Filter unused fields from schema in generation of OpenAPI3 contracts (#151)
  • Support service discovery servers to resolve service addresses - including a Consul implementation (#158)
  • GraphQL schema generation (#161)
  • Add a Semaphore header to generated files (#164)
  • Avro schema provider (#168)
  • JSON specs provider (#170)
  • Rewrite URLs - similar to nginx rewrite (#172)
  • Remove go-micro transport (#178)
  • OpenAPI3 config should not override the protobuf config (#182)
  • Fix OpenAPI3 generation for a flow without inputs (#185)

v2.0.1

3 years ago

A small release containing a bug fix preventing from HTTP request bodies being sent to services.

v2.0.0

3 years ago

🎉 after a lot of hard work and 19 beta releases and 991 commits are we proud to release Semaphore v2.0.0. Feel free to check it out! If you have any questions feel free to open a new issue on Github or to reach out to the community on Discord.

v2.0.0-beta.19

3 years ago

Hi everyone, hope you are doing well. This release includes many features on which we have been working on really hard in the past months. Below did I include a couple of highlights of what to expect in this release:

  • Experimental OpenAPI3 and Protobuf generators (check out semaphore generate) (#100 & #107)
  • HTTP CORS headers (#102)
  • Define separate request and response codecs (#109)
  • www-form-urlencoded codec (#110)
  • Improved logging performance
  • Future improvements to test coverage (we are now at +- 85%)
  • Header performance improvements
  • Refactoring core packages and components
  • Experimental tracing improvements including more details (#121)

Feel free to reach out to us through issues or Discord if you have any issues or suggestions.

v2.0.0-beta.18

3 years ago

Changed project name to Semaphore

v2.0.0-beta.17

3 years ago

Small release fixing various bugs and exposing additional internal packages.

v2.0.0-beta.16

3 years ago

Happy Monday, we would like to release conditional logic and error handling to the public for you to try out. These will be the last features before the v2.0.0 release and we would love to get your feedback.

Conditions

Conditions could be wrapped around resources. The wrapped resources are executed if the condition results in a boolean which is true. Conditions could be nested and resources inside a condition block could be referenced inside other resources and the output.

flow "condition" {
  input "schema.Object" {}

  if "{{ input:kind }} == 'INSERT'" {
    resource "insert" {}

    if "{{ insert:upgrade }} == true" {
      resource "upgrade" {}
    }
  }
}

Error Handling

Custom error messages, status codes and response objects could be defined inside your flows. These objects could reference properties and be overriden with constant values. Error handling consists out of two blocks. error which defines the custom response object. These objects are returned to the user if the protocol allows for dynamic error objects (such as HTTP). on_error allows for the definitions of parameters (params) and to override the message and status properties. Optionally could a schema be defined. This schema is used to decode the received message. The default error properties (message and status), error params and other resources could be referenced inside the on_error and error blocks.

flow "greeter" {
    on_error {
        message = "unexpected error"
        status = 500
    }

    resource "echo" {
        error "com.Schema" {
            message "meta" {
                status = "{{ error:status }}"
                trace = "{{ error.params:trace }}"
            }

            message = "{{ error:message }}"
        }

        on_error {
            schema = "com.Schema"
            message = "{{ echo.error:message }}"
            status = 401

            params {
                trace = "{{ echo.error:trace }}"
            }
        }
    }
}

If no error object is defined is the parent error object copied.

error "com.Schema" {
    message "meta" {
        status = "{{ error:status }}"
    }

    message = "{{ error:message }}"
}

flow "greeter" {
    # copies the global error object if not set

    resource "echo" {
        # copies the flow error object if not set
    }
}

v2.0.0-beta.15

3 years ago

This release includes bug fixes related to header referencing and referencing parsing.

v2.0.0-beta.14

3 years ago

This release includes a couple of bug improvements and extends the Github Actions workflow to include additional artifacts to the release.

v2.0.0-beta.13

3 years ago

This release includes a couple of bug fixes and quality of life improvements.