Skip to content

Commit

Permalink
fix rtm-subscriber
Browse files Browse the repository at this point in the history
improve logging
  • Loading branch information
akolomentsev committed Apr 26, 2018
1 parent 77a4cb5 commit 2e2dc2f
Show file tree
Hide file tree
Showing 12 changed files with 94 additions and 69 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ protected IRtmPipelineHandler createPipeline(WebSocket ws, IRtmPduHandler handle
};
}

@Override
protected void leaveConnectedState(IRtmState<Void> state) {
subscriber = null;
super.leaveConnectedState(state);
}

@Override
public String channel() {
return channel;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,48 +5,48 @@ package com.satori.gradle.composer.plugin
import org.gradle.api.*

open class ComposerPluginConvention(val project: Project) {
val satoriComposerVersion = "0.5.69-SNAPSHOT"
val satoriComposerVersion = "0.5.71-SNAPSHOT"

fun satoriGradleComposerPlugin() = "com.satori:satori-gradle-composer-plugin:0.5.69-SNAPSHOT"
fun satoriGradleComposerPlugin() = "com.satori:satori-gradle-composer-plugin:0.5.71-SNAPSHOT"

fun satoriComposer() = "com.satori:satori-composer:0.5.69-SNAPSHOT"
fun satoriComposer() = "com.satori:satori-composer:0.5.71-SNAPSHOT"

fun satoriMods() = "com.satori:satori-mods:0.5.69-SNAPSHOT"
fun satoriMods() = "com.satori:satori-mods:0.5.71-SNAPSHOT"

fun satoriModsSuite() = "com.satori:satori-mods-suite:0.5.69-SNAPSHOT"
fun satoriModsSuite() = "com.satori:satori-mods-suite:0.5.71-SNAPSHOT"

fun satoriLibsAsyncApi() = "com.satori:satori-libs-async-api:0.5.69-SNAPSHOT"
fun satoriLibsAsyncApi() = "com.satori:satori-libs-async-api:0.5.71-SNAPSHOT"

fun satoriLibsAsyncCore() = "com.satori:satori-libs-async-core:0.5.69-SNAPSHOT"
fun satoriLibsAsyncCore() = "com.satori:satori-libs-async-core:0.5.71-SNAPSHOT"

fun satoriLibsAsyncKotlin() = "com.satori:satori-libs-async-kotlin:0.5.69-SNAPSHOT"
fun satoriLibsAsyncKotlin() = "com.satori:satori-libs-async-kotlin:0.5.71-SNAPSHOT"

fun satoriLibsCommonKotlin() = "com.satori:satori-libs-common-kotlin:0.5.69-SNAPSHOT"
fun satoriLibsCommonKotlin() = "com.satori:satori-libs-common-kotlin:0.5.71-SNAPSHOT"

fun satoriLibsVertxKotlin() = "com.satori:satori-libs-vertx-kotlin:0.5.69-SNAPSHOT"
fun satoriLibsVertxKotlin() = "com.satori:satori-libs-vertx-kotlin:0.5.71-SNAPSHOT"

fun satoriLibsGtfs() = "com.satori:satori-libs-gtfs:0.5.69-SNAPSHOT"
fun satoriLibsGtfs() = "com.satori:satori-libs-gtfs:0.5.71-SNAPSHOT"

fun satoriLibsCompositionDrawer() = "com.satori:satori-libs-composition-drawer:0.5.69-SNAPSHOT"
fun satoriLibsCompositionDrawer() = "com.satori:satori-libs-composition-drawer:0.5.71-SNAPSHOT"

fun satoriLibsTestlib() = "com.satori:satori-libs-testlib:0.5.69-SNAPSHOT"
fun satoriLibsTestlib() = "com.satori:satori-libs-testlib:0.5.71-SNAPSHOT"

fun satoriLibsGradleUtils() = "com.satori:satori-libs-gradle-utils:0.5.69-SNAPSHOT"
fun satoriLibsGradleUtils() = "com.satori:satori-libs-gradle-utils:0.5.71-SNAPSHOT"

fun satoriLibsGradleTransform() = "com.satori:satori-libs-gradle-transform:0.5.69-SNAPSHOT"
fun satoriLibsGradleTransform() = "com.satori:satori-libs-gradle-transform:0.5.71-SNAPSHOT"

fun satoriLibsGradleGithub() = "com.satori:satori-libs-gradle-github:0.5.69-SNAPSHOT"
fun satoriLibsGradleGithub() = "com.satori:satori-libs-gradle-github:0.5.71-SNAPSHOT"

fun satoriLibsGradleDocker() = "com.satori:satori-libs-gradle-docker:0.5.69-SNAPSHOT"
fun satoriLibsGradleDocker() = "com.satori:satori-libs-gradle-docker:0.5.71-SNAPSHOT"

fun satoriLibsGradleCodegen() = "com.satori:satori-libs-gradle-codegen:0.5.69-SNAPSHOT"
fun satoriLibsGradleCodegen() = "com.satori:satori-libs-gradle-codegen:0.5.71-SNAPSHOT"

fun satoriCodegenUtils() = "com.satori:satori-codegen-utils:0.5.69-SNAPSHOT"
fun satoriCodegenUtils() = "com.satori:satori-codegen-utils:0.5.71-SNAPSHOT"

fun satoriCodegenCodemodelDsl() = "com.satori:satori-codegen-codemodel-dsl:0.5.69-SNAPSHOT"
fun satoriCodegenCodemodelDsl() = "com.satori:satori-codegen-codemodel-dsl:0.5.71-SNAPSHOT"

fun satoriCodegenMustacheBuilder() = "com.satori:satori-codegen-mustache-builder:0.5.69-SNAPSHOT"
fun satoriCodegenMustacheBuilder() = "com.satori:satori-codegen-mustache-builder:0.5.71-SNAPSHOT"

fun satoriCodegenYamlFileMerger() = "com.satori:satori-codegen-yaml-file-merger:0.5.69-SNAPSHOT"
fun satoriCodegenYamlFileMerger() = "com.satori:satori-codegen-yaml-file-merger:0.5.71-SNAPSHOT"

}
48 changes: 24 additions & 24 deletions gradle-composer-plugin/readme.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Maven](https://img.shields.io/nexus/s/https/oss.sonatype.org/com.satori/satori-gradle-composer-plugin.svg)](https://oss.sonatype.org/content/repositories/snapshots/com/satori/satori-gradle-composer-plugin/0.5.69-SNAPSHOT/)
[![Maven](https://img.shields.io/nexus/s/https/oss.sonatype.org/com.satori/satori-gradle-composer-plugin.svg)](https://oss.sonatype.org/content/repositories/snapshots/com/satori/satori-gradle-composer-plugin/0.5.71-SNAPSHOT/)

## Comoser Gradle plugin

Expand All @@ -13,7 +13,7 @@ buildscript{
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
dependencies {
classpath "com.satori:satori-gradle-composer-plugin:0.5.69-SNAPSHOT"
classpath "com.satori:satori-gradle-composer-plugin:0.5.71-SNAPSHOT"
}
}
apply plugin: "com.satori.composer"
Expand All @@ -22,47 +22,47 @@ apply plugin: "com.satori.composer"
### project extensions


- `satoriGradleComposerPlugin()` - returns `"com.satori:satori-gradle-composer-plugin:0.5.69-SNAPSHOT"`
- `satoriGradleComposerPlugin()` - returns `"com.satori:satori-gradle-composer-plugin:0.5.71-SNAPSHOT"`

- `satoriComposer()` - returns `"com.satori:satori-composer:0.5.69-SNAPSHOT"`
- `satoriComposer()` - returns `"com.satori:satori-composer:0.5.71-SNAPSHOT"`

- `satoriMods()` - returns `"com.satori:satori-mods:0.5.69-SNAPSHOT"`
- `satoriMods()` - returns `"com.satori:satori-mods:0.5.71-SNAPSHOT"`

- `satoriModsSuite()` - returns `"com.satori:satori-mods-suite:0.5.69-SNAPSHOT"`
- `satoriModsSuite()` - returns `"com.satori:satori-mods-suite:0.5.71-SNAPSHOT"`

- `satoriLibsAsyncApi()` - returns `"com.satori:satori-libs-async-api:0.5.69-SNAPSHOT"`
- `satoriLibsAsyncApi()` - returns `"com.satori:satori-libs-async-api:0.5.71-SNAPSHOT"`

- `satoriLibsAsyncCore()` - returns `"com.satori:satori-libs-async-core:0.5.69-SNAPSHOT"`
- `satoriLibsAsyncCore()` - returns `"com.satori:satori-libs-async-core:0.5.71-SNAPSHOT"`

- `satoriLibsAsyncKotlin()` - returns `"com.satori:satori-libs-async-kotlin:0.5.69-SNAPSHOT"`
- `satoriLibsAsyncKotlin()` - returns `"com.satori:satori-libs-async-kotlin:0.5.71-SNAPSHOT"`

- `satoriLibsCommonKotlin()` - returns `"com.satori:satori-libs-common-kotlin:0.5.69-SNAPSHOT"`
- `satoriLibsCommonKotlin()` - returns `"com.satori:satori-libs-common-kotlin:0.5.71-SNAPSHOT"`

- `satoriLibsVertxKotlin()` - returns `"com.satori:satori-libs-vertx-kotlin:0.5.69-SNAPSHOT"`
- `satoriLibsVertxKotlin()` - returns `"com.satori:satori-libs-vertx-kotlin:0.5.71-SNAPSHOT"`

- `satoriLibsGtfs()` - returns `"com.satori:satori-libs-gtfs:0.5.69-SNAPSHOT"`
- `satoriLibsGtfs()` - returns `"com.satori:satori-libs-gtfs:0.5.71-SNAPSHOT"`

- `satoriLibsCompositionDrawer()` - returns `"com.satori:satori-libs-composition-drawer:0.5.69-SNAPSHOT"`
- `satoriLibsCompositionDrawer()` - returns `"com.satori:satori-libs-composition-drawer:0.5.71-SNAPSHOT"`

- `satoriLibsTestlib()` - returns `"com.satori:satori-libs-testlib:0.5.69-SNAPSHOT"`
- `satoriLibsTestlib()` - returns `"com.satori:satori-libs-testlib:0.5.71-SNAPSHOT"`

- `satoriLibsGradleUtils()` - returns `"com.satori:satori-libs-gradle-utils:0.5.69-SNAPSHOT"`
- `satoriLibsGradleUtils()` - returns `"com.satori:satori-libs-gradle-utils:0.5.71-SNAPSHOT"`

- `satoriLibsGradleTransform()` - returns `"com.satori:satori-libs-gradle-transform:0.5.69-SNAPSHOT"`
- `satoriLibsGradleTransform()` - returns `"com.satori:satori-libs-gradle-transform:0.5.71-SNAPSHOT"`

- `satoriLibsGradleGithub()` - returns `"com.satori:satori-libs-gradle-github:0.5.69-SNAPSHOT"`
- `satoriLibsGradleGithub()` - returns `"com.satori:satori-libs-gradle-github:0.5.71-SNAPSHOT"`

- `satoriLibsGradleDocker()` - returns `"com.satori:satori-libs-gradle-docker:0.5.69-SNAPSHOT"`
- `satoriLibsGradleDocker()` - returns `"com.satori:satori-libs-gradle-docker:0.5.71-SNAPSHOT"`

- `satoriLibsGradleCodegen()` - returns `"com.satori:satori-libs-gradle-codegen:0.5.69-SNAPSHOT"`
- `satoriLibsGradleCodegen()` - returns `"com.satori:satori-libs-gradle-codegen:0.5.71-SNAPSHOT"`

- `satoriCodegenUtils()` - returns `"com.satori:satori-codegen-utils:0.5.69-SNAPSHOT"`
- `satoriCodegenUtils()` - returns `"com.satori:satori-codegen-utils:0.5.71-SNAPSHOT"`

- `satoriCodegenCodemodelDsl()` - returns `"com.satori:satori-codegen-codemodel-dsl:0.5.69-SNAPSHOT"`
- `satoriCodegenCodemodelDsl()` - returns `"com.satori:satori-codegen-codemodel-dsl:0.5.71-SNAPSHOT"`

- `satoriCodegenMustacheBuilder()` - returns `"com.satori:satori-codegen-mustache-builder:0.5.69-SNAPSHOT"`
- `satoriCodegenMustacheBuilder()` - returns `"com.satori:satori-codegen-mustache-builder:0.5.71-SNAPSHOT"`

- `satoriCodegenYamlFileMerger()` - returns `"com.satori:satori-codegen-yaml-file-merger:0.5.69-SNAPSHOT"`
- `satoriCodegenYamlFileMerger()` - returns `"com.satori:satori-codegen-yaml-file-merger:0.5.71-SNAPSHOT"`



Expand All @@ -76,6 +76,6 @@ apply plugin: "com.satori.composer"
<dependency>
<groupId>com.satori</groupId>
<artifactId>satori-gradle-composer-plugin</artifactId>
<version>0.5.69-SNAPSHOT</version>
<version>0.5.71-SNAPSHOT</version>
</dependency>
```
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
group=com.satori
version=0.5.69-SNAPSHOT
version=0.5.71-SNAPSHOT

scaffoldingVersion=0.5.68-SNAPSHOT
scaffoldingVersion=0.5.70-SNAPSHOT

#nexusUsername=
#nexusPassword=
Expand Down
1 change: 1 addition & 0 deletions libs/async-kotlin/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// main dependencies
dependencies {
compile project(':libs-async-core')
compile "org.slf4j:slf4j-jdk14:$slf4jVersion"
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
compile "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinCoroutinesVersion"
}
Expand Down
22 changes: 20 additions & 2 deletions libs/async-kotlin/src/com/satori/libs/async/kotlin/FutureLib.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,36 @@ package com.satori.libs.async.kotlin

import com.satori.libs.async.api.*
import com.satori.libs.async.core.*
import org.slf4j.*
import kotlin.coroutines.experimental.*

private val log = LoggerFactory.getLogger("com.satori.libs.async.kotlin.FutureLib")

private fun AsyncFuture<*>.printState(): String{
if(!isCompleted){
return "in progress"
}
val ar = result!!
if(!ar.isSucceeded){
return "failed with '${ar.error.message}'"
}
return "succeeded with '${ar.value}'"
}

fun <T> future(block: suspend () -> T): IAsyncFuture<T> {
val future = object : AsyncFuture<T>(), Continuation<T> {
override val context get() = EmptyCoroutineContext

override fun resume(value: T) {
succeed(value)
if(!trySucceed(value)){
log.error("can't succeed future, since it is already completed ('${printState()}')", IllegalStateException("future has been already completed"))
}
}

override fun resumeWithException(exception: Throwable) {
fail(exception)
if(!tryFail(exception)){
log.error("can't fail future, since it is already completed ('${printState()}')", IllegalStateException("future has been already completed"))
}
}
}
block.startCoroutine(future)
Expand Down
10 changes: 5 additions & 5 deletions libs/composition-drawer/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ buildscript{
maven {url "https://oss.sonatype.org/content/repositories/snapshots"}
}
dependencies {
classpath "com.satori:satori-libs-composition-drawer:0.5.69-SNAPSHOT"
classpath "com.satori:satori-libs-composition-drawer:0.5.71-SNAPSHOT"
}
}
apply plugin: "com.satori.composition.drawer"
Expand All @@ -43,7 +43,7 @@ buildscript{
maven { url "https://oss.sonatype.org/content/repositories/snapshots"}
}
dependencies {
classpath "com.satori:satori-libs-composition-drawer:0.5.69-SNAPSHOT"
classpath "com.satori:satori-libs-composition-drawer:0.5.71-SNAPSHOT"
}
}
Expand Down Expand Up @@ -72,7 +72,7 @@ repositories {
configurations{compositionDrawer}
dependencies {
compositionDrawer "com.satori:satori-libs-composition-drawer:0.5.69-SNAPSHOT"
compositionDrawer "com.satori:satori-libs-composition-drawer:0.5.71-SNAPSHOT"
}
task generateCompositionDiagram(type: JavaExec) {
Expand Down Expand Up @@ -110,13 +110,13 @@ task generateCompositionDiagram(type: JavaExec) {
<dependency>
<groupId>com.satori</groupId>
<artifactId>satori-libs-composition-drawer</artifactId>
<version>0.5.69-SNAPSHOT</version>
<version>0.5.71-SNAPSHOT</version>
</dependency>
```


### Download
[satori-libs-composition-drawer.v0.5.69-SNAPSHOT.zip](https://github.com/satori-com/satori-composer/releases/download/v0.5.69-SNAPSHOT/satori-libs-composition-drawer.v0.5.69-SNAPSHOT.zip)<br/>
[satori-libs-composition-drawer.v0.5.71-SNAPSHOT.zip](https://github.com/satori-com/satori-composer/releases/download/v0.5.71-SNAPSHOT/satori-libs-composition-drawer.v0.5.71-SNAPSHOT.zip)<br/>
[or see latest releases](https://github.com/satori-com/satori-composer/releases/latest)

### Example of generated diagram
Expand Down
6 changes: 3 additions & 3 deletions libs/gradle/codegen/readme.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Maven](https://img.shields.io/nexus/s/https/oss.sonatype.org/com.satori/satori-libs-gradle-codegen.svg)](https://oss.sonatype.org/content/repositories/snapshots/com/satori/satori-libs-gradle-codegen/0.5.69-SNAPSHOT/)
[![Maven](https://img.shields.io/nexus/s/https/oss.sonatype.org/com.satori/satori-libs-gradle-codegen.svg)](https://oss.sonatype.org/content/repositories/snapshots/com/satori/satori-libs-gradle-codegen/0.5.71-SNAPSHOT/)

## 'codegen' gradle plugin

Expand All @@ -13,7 +13,7 @@ buildscript{
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
dependencies {
classpath "com.satori:satori-libs-gradle-codegen:0.5.69-SNAPSHOT"
classpath "com.satori:satori-libs-gradle-codegen:0.5.71-SNAPSHOT"
}
}
apply plugin: "com.satori.codegen"
Expand Down Expand Up @@ -128,6 +128,6 @@ codeFormatter.camel(project.name)
<dependency>
<groupId>com.satori</groupId>
<artifactId>satori-libs-gradle-codegen</artifactId>
<version>0.5.69-SNAPSHOT</version>
<version>0.5.71-SNAPSHOT</version>
</dependency>
```
6 changes: 3 additions & 3 deletions libs/gradle/docker/readme.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Maven](https://img.shields.io/nexus/s/https/oss.sonatype.org/com.satori/satori-libs-gradle-docker.svg)](https://oss.sonatype.org/content/repositories/snapshots/com/satori/satori-libs-gradle-docker/0.5.69-SNAPSHOT/)
[![Maven](https://img.shields.io/nexus/s/https/oss.sonatype.org/com.satori/satori-libs-gradle-docker.svg)](https://oss.sonatype.org/content/repositories/snapshots/com/satori/satori-libs-gradle-docker/0.5.71-SNAPSHOT/)

## Gradle plugin 'com.satori.transform'

Expand All @@ -14,7 +14,7 @@ buildscript{
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
dependencies {
classpath "com.satori:satori-libs-gradle-docker:0.5.69-SNAPSHOT"
classpath "com.satori:satori-libs-gradle-docker:0.5.71-SNAPSHOT"
}
}
apply plugin: "com.satori.docker"
Expand Down Expand Up @@ -146,6 +146,6 @@ stop docker container
<dependency>
<groupId>com.satori</groupId>
<artifactId>satori-libs-gradle-docker</artifactId>
<version>0.5.69-SNAPSHOT</version>
<version>0.5.71-SNAPSHOT</version>
</dependency>
```
6 changes: 3 additions & 3 deletions libs/gradle/github/readme.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Maven](https://img.shields.io/nexus/s/https/oss.sonatype.org/com.satori/satori-libs-gradle-github.svg)](https://oss.sonatype.org/content/repositories/snapshots/com/satori/satori-libs-gradle-github/0.5.69-SNAPSHOT/)
[![Maven](https://img.shields.io/nexus/s/https/oss.sonatype.org/com.satori/satori-libs-gradle-github.svg)](https://oss.sonatype.org/content/repositories/snapshots/com/satori/satori-libs-gradle-github/0.5.71-SNAPSHOT/)
## 'github' gradle plugin
tasks for management github releases using [Github Releases API v3](https://developer.github.com/v3/repos/releases/)

Expand All @@ -10,7 +10,7 @@ buildscript{
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
dependencies {
classpath "com.satori:satori-libs-gradle-github:0.5.69-SNAPSHOT"
classpath "com.satori:satori-libs-gradle-github:0.5.71-SNAPSHOT"
}
}
apply plugin: "com.satori.github"
Expand Down Expand Up @@ -43,6 +43,6 @@ task githubPublishRelease(type: GitHubPublishReleaseTask) {
<dependency>
<groupId>com.satori</groupId>
<artifactId>satori-libs-gradle-github</artifactId>
<version>0.5.69-SNAPSHOT</version>
<version>0.5.71-SNAPSHOT</version>
</dependency>
```
6 changes: 3 additions & 3 deletions libs/gradle/transform/readme.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Maven](https://img.shields.io/nexus/s/https/oss.sonatype.org/com.satori/satori-libs-gradle-transform.svg)](https://oss.sonatype.org/content/repositories/snapshots/com/satori/satori-libs-gradle-transform/0.5.69-SNAPSHOT/)
[![Maven](https://img.shields.io/nexus/s/https/oss.sonatype.org/com.satori/satori-libs-gradle-transform.svg)](https://oss.sonatype.org/content/repositories/snapshots/com/satori/satori-libs-gradle-transform/0.5.71-SNAPSHOT/)
## Gradle plugin 'com.satori.transform'

gradle task wrappers around groovy [GStringTemplateEngine](http://docs.groovy-lang.org/next/html/documentation/template-engines.html#_gstringtemplateengine)
Expand All @@ -12,7 +12,7 @@ buildscript{
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
dependencies {
classpath "com.satori:satori-libs-gradle-docker:0.5.69-SNAPSHOT"
classpath "com.satori:satori-libs-gradle-docker:0.5.71-SNAPSHOT"
}
}
apply plugin: "com.satori.docker"
Expand Down Expand Up @@ -59,6 +59,6 @@ task generateReadme {
<dependency>
<groupId>com.satori</groupId>
<artifactId>satori-libs-gradle-transform</artifactId>
<version>0.5.69-SNAPSHOT</version>
<version>0.5.71-SNAPSHOT</version>
</dependency>
```
4 changes: 2 additions & 2 deletions libs/gtfs/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ classes are generated based on [gtfs-realtime.proto](https://developers.google.c
<dependency>
<groupId>com.satori</groupId>
<artifactId>satori-libs-gtfs</artifactId>
<version>0.5.69-SNAPSHOT</version>
<version>0.5.71-SNAPSHOT</version>
</dependency>
```


### Download
[satori-libs-gtfs.v0.5.69-SNAPSHOT.zip](https://github.com/satori-com/satori-composer/releases/download/v0.5.69-SNAPSHOT/satori-libs-gtfs.v0.5.69-SNAPSHOT.zip)<br/>
[satori-libs-gtfs.v0.5.71-SNAPSHOT.zip](https://github.com/satori-com/satori-composer/releases/download/v0.5.71-SNAPSHOT/satori-libs-gtfs.v0.5.71-SNAPSHOT.zip)<br/>
[or see latest releases](https://github.com/satori-com/satori-composer/releases/latest)

### Examples
Expand Down

0 comments on commit 2e2dc2f

Please sign in to comment.