Take control of your data, connect with anything, and expose it anywhere through protocols such as HTTP, GraphQL, and gRPC.
Quite a lot of new features and fixes were applied :tada:
These are the highlights:
nginx rewrite
(#172)A small release containing a bug fix preventing from HTTP request bodies being sent to services.
🎉 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.
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:
semaphore generate
) (#100 & #107)Feel free to reach out to us through issues or Discord if you have any issues or suggestions.
Changed project name to Semaphore
Small release fixing various bugs and exposing additional internal packages.
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 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" {}
}
}
}
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
}
}
This release includes bug fixes related to header referencing and referencing parsing.
This release includes a couple of bug improvements and extends the Github Actions workflow to include additional artifacts to the release.
This release includes a couple of bug fixes and quality of life improvements.