diff --git a/composer/src/com/satori/composer/rtm/RtmChannelSubscriber.java b/composer/src/com/satori/composer/rtm/RtmChannelSubscriber.java index c994862..8f28739 100644 --- a/composer/src/com/satori/composer/rtm/RtmChannelSubscriber.java +++ b/composer/src/com/satori/composer/rtm/RtmChannelSubscriber.java @@ -52,6 +52,12 @@ protected IRtmPipelineHandler createPipeline(WebSocket ws, IRtmPduHandler handle }; } + @Override + protected void leaveConnectedState(IRtmState state) { + subscriber = null; + super.leaveConnectedState(state); + } + @Override public String channel() { return channel; diff --git a/gradle-composer-plugin/gen/com/satori/gradle/composer/plugin/ComposerPluginConvention.kt b/gradle-composer-plugin/gen/com/satori/gradle/composer/plugin/ComposerPluginConvention.kt index d42b99b..d233fb4 100644 --- a/gradle-composer-plugin/gen/com/satori/gradle/composer/plugin/ComposerPluginConvention.kt +++ b/gradle-composer-plugin/gen/com/satori/gradle/composer/plugin/ComposerPluginConvention.kt @@ -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" } \ No newline at end of file diff --git a/gradle-composer-plugin/readme.md b/gradle-composer-plugin/readme.md index 90dd7ac..1eef0c3 100644 --- a/gradle-composer-plugin/readme.md +++ b/gradle-composer-plugin/readme.md @@ -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 @@ -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" @@ -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"` @@ -76,6 +76,6 @@ apply plugin: "com.satori.composer" com.satori satori-gradle-composer-plugin - 0.5.69-SNAPSHOT + 0.5.71-SNAPSHOT ``` diff --git a/gradle.properties b/gradle.properties index 2f38ad7..e3fea1b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -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= diff --git a/libs/async-kotlin/build.gradle b/libs/async-kotlin/build.gradle index 9da5e44..5eaf425 100644 --- a/libs/async-kotlin/build.gradle +++ b/libs/async-kotlin/build.gradle @@ -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" } diff --git a/libs/async-kotlin/src/com/satori/libs/async/kotlin/FutureLib.kt b/libs/async-kotlin/src/com/satori/libs/async/kotlin/FutureLib.kt index 7f64a3a..1dd494e 100644 --- a/libs/async-kotlin/src/com/satori/libs/async/kotlin/FutureLib.kt +++ b/libs/async-kotlin/src/com/satori/libs/async/kotlin/FutureLib.kt @@ -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 future(block: suspend () -> T): IAsyncFuture { val future = object : AsyncFuture(), Continuation { 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) diff --git a/libs/composition-drawer/readme.md b/libs/composition-drawer/readme.md index 07f02bf..b3b2afc 100644 --- a/libs/composition-drawer/readme.md +++ b/libs/composition-drawer/readme.md @@ -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" @@ -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" } } @@ -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) { @@ -110,13 +110,13 @@ task generateCompositionDiagram(type: JavaExec) { com.satori satori-libs-composition-drawer - 0.5.69-SNAPSHOT + 0.5.71-SNAPSHOT ``` ### 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)
+[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)
[or see latest releases](https://github.com/satori-com/satori-composer/releases/latest) ### Example of generated diagram diff --git a/libs/gradle/codegen/readme.md b/libs/gradle/codegen/readme.md index fd64e3d..c3936ff 100644 --- a/libs/gradle/codegen/readme.md +++ b/libs/gradle/codegen/readme.md @@ -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 @@ -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" @@ -128,6 +128,6 @@ codeFormatter.camel(project.name) com.satori satori-libs-gradle-codegen - 0.5.69-SNAPSHOT + 0.5.71-SNAPSHOT ``` diff --git a/libs/gradle/docker/readme.md b/libs/gradle/docker/readme.md index 0d559ab..f2cd3f7 100644 --- a/libs/gradle/docker/readme.md +++ b/libs/gradle/docker/readme.md @@ -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' @@ -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" @@ -146,6 +146,6 @@ stop docker container com.satori satori-libs-gradle-docker - 0.5.69-SNAPSHOT + 0.5.71-SNAPSHOT ``` diff --git a/libs/gradle/github/readme.md b/libs/gradle/github/readme.md index 8fb288f..2ef689b 100644 --- a/libs/gradle/github/readme.md +++ b/libs/gradle/github/readme.md @@ -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/) @@ -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" @@ -43,6 +43,6 @@ task githubPublishRelease(type: GitHubPublishReleaseTask) { com.satori satori-libs-gradle-github - 0.5.69-SNAPSHOT + 0.5.71-SNAPSHOT ``` diff --git a/libs/gradle/transform/readme.md b/libs/gradle/transform/readme.md index a647947..ce15adb 100644 --- a/libs/gradle/transform/readme.md +++ b/libs/gradle/transform/readme.md @@ -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) @@ -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" @@ -59,6 +59,6 @@ task generateReadme { com.satori satori-libs-gradle-transform - 0.5.69-SNAPSHOT + 0.5.71-SNAPSHOT ``` diff --git a/libs/gtfs/readme.md b/libs/gtfs/readme.md index 7f3f53f..06095b7 100644 --- a/libs/gtfs/readme.md +++ b/libs/gtfs/readme.md @@ -14,13 +14,13 @@ classes are generated based on [gtfs-realtime.proto](https://developers.google.c com.satori satori-libs-gtfs - 0.5.69-SNAPSHOT + 0.5.71-SNAPSHOT ``` ### 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)
+[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)
[or see latest releases](https://github.com/satori-com/satori-composer/releases/latest) ### Examples