{"id":18595442,"url":"https://github.com/svenruppert/functional-reactive-lib","last_synced_at":"2025-07-22T05:03:00.329Z","repository":{"id":54887871,"uuid":"88618996","full_name":"svenruppert/functional-reactive-lib","owner":"svenruppert","description":"A core java lib for the functional reactive coding ...   JDK only","archived":false,"fork":false,"pushed_at":"2025-03-21T21:35:41.000Z","size":366,"stargazers_count":25,"open_issues_count":0,"forks_count":5,"subscribers_count":15,"default_branch":"develop","last_synced_at":"2025-04-11T03:06:27.636Z","etag":null,"topics":["design-pattern","functional-programming","functional-reactive-programming","java","java-8","java-9","java-library","ruppert","sven"],"latest_commit_sha":null,"homepage":"http://www.functional-reactive.org","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/svenruppert.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-04-18T11:49:07.000Z","updated_at":"2025-03-22T16:58:27.000Z","dependencies_parsed_at":"2025-03-21T22:35:02.532Z","dependency_job_id":null,"html_url":"https://github.com/svenruppert/functional-reactive-lib","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/svenruppert/functional-reactive-lib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svenruppert%2Ffunctional-reactive-lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svenruppert%2Ffunctional-reactive-lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svenruppert%2Ffunctional-reactive-lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svenruppert%2Ffunctional-reactive-lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/svenruppert","download_url":"https://codeload.github.com/svenruppert/functional-reactive-lib/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svenruppert%2Ffunctional-reactive-lib/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266430671,"owners_count":23927165,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["design-pattern","functional-programming","functional-reactive-programming","java","java-8","java-9","java-library","ruppert","sven"],"created_at":"2024-11-07T01:19:46.400Z","updated_at":"2025-07-22T05:03:00.177Z","avatar_url":"https://github.com/svenruppert.png","language":"Java","funding_links":[],"categories":["并发编程"],"sub_categories":[],"readme":"[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.rapidpm/rapidpm-functional-reactive/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.rapidpm/rapidpm-functional-reactive)\n\n\n![Sonarcloud Status](https://sonarcloud.io/api/project_badges/measure?project=functional-reactive_functional-reactive-lib\u0026metric=security_rating)\n![Sonarcloud Status](https://sonarcloud.io/api/project_badges/measure?project=functional-reactive_functional-reactive-lib\u0026metric=sqale_rating)\n\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/a0b7d530374d400fa9a79d270cf95c1a)](https://www.codacy.com/app/sven-ruppert/functional-reactive-lib?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=functional-reactive/functional-reactive-lib\u0026amp;utm_campaign=Badge_Grade)\n\n\n# Functional Reactive Lib with Core Java\nThis is a nano lib, based on a few classes that will give you \na handful of functional elements that you can use in your core Java project.\nIf you want to know more about it, have a look at my Youtube Series about this topic.\n\n* (EN): [https://youtu.be/jMP9r5_bi5c](https://youtu.be/jMP9r5_bi5c)\n* (DE): [https://youtu.be/S5ysVvritIg](https://youtu.be/S5ysVvritIg)\n\n## Please, subscribe my **Youtube channel**\n* Youtube: [DE] - [bit.ly/Youtube-Sven](https://bit.ly/Youtube-Sven)\n* Youtube: [EN] - [bit.ly/Outdoor-Nerd](https://bit.ly/Outdoor-Nerd)\n\n## JDK8 or JDK9 and above\nI compiled this with the Open JDK8.\nPrevious versions at maven central are build ith JDK10.\nI went away from the JDK10, because most projects I know, are using JDK8 in production right know.\nBut, if you want to use this with JDK9/10/11/... you can use it.. it is working perfect!\nOnly if you start using the JMS, it could be helpful to add a **module-info.java**\nAdd the following lines, switch inside the pom.xml to the JDK version you prefer,\nstart a **mvn clean install** and be happy ;-)\n\n```java\nmodule com.svenruppert.functional.reactive {\n exports com.svenruppert.frp;\n exports com.svenruppert.functional.functions;\n exports com.svenruppert.functional.matcher;\n exports com.svenruppert.functional.memoizer;\n exports com.svenruppert.functional.model;\n exports com.svenruppert.functional.model.serial;\n exports com.svenruppert.functional.reactive;\n}\n```\n\n\n# Release Notes\n\n## 03.00.00 - BREAKING CHANGES\nI switched to dependencies com.svenruppert with version 06.00.00\nThis is the same as rapidpm dependencies, but in a new namespace and smaller updates.\nThis project is switching to the namespace com.svenruppert as well.\nno new features are included.\n\n## 02.00.04-SRU\nfixed jdk in jitpack yml\n\n## 02.00.03-SRU\nupdated parent, and maven minimum version to 3.9.6\n\n## 02.00.02-SRU\nSwitched groupid to 02.00.02-SRU - jitpack custom domain name is not working properly\nupdated to parent version 05.00.03-SRU\n\n## 02.00.00-SRU\nChanging to new namespace. The package will be under \ncom.svenruppert:functional-reactive now\n\n\n## 01.01.00-RPM-SNAPSHOT\nThis release we will increase test coverage and documentation.\nThe basic structures and functions are in production used since longer time.\nAdding Apache Lic header to all files\n\n## 01.00.07-RPM\n\n* Transformations\n* static \u003cT\u003e Function\u003cIterator\u003cT\u003e, Stream\u003cT\u003e\u003e iteratorToStream() \n* \u003cV, R\u003e Result\u003cR\u003e thenCombineFlat(V value, BiFunction\u003cT, V, R\u003e func)\n* started Youtube Series about this lib.\n* removed JitCI from production pipeline\n\n## 01.00.03-RPM\n* added JitCI for deployment as well\n* version updates\n\n## 01.00.02-RPM\n*  static \u003cT, R\u003e CheckedFunction\u003cT, R\u003e asCheckedFunc(Function\u003cT, R\u003e f)\n* Converting.convertToString\n* Converting.convertToInteger\n* Converting.convertToDouble\n* SystemProperties Util Functions\n* Single\u003cT\u003e\n   \n## 01.00.01-RPM\n* BUGFIX in case, the result was calculated two times.\n\n## 01.00.00-RPM\n* defined it as final, as there was no big change since a long time using it in a bunch of projects\n* JDK8 is used to create the jar\n* module-info.java is available inside the folder **_data**\n\n## 00.07.06-RPM\n* parent pom update - version updates\n\n## 00.07.05-RPM\n* parent pom update - version updates\n* added docker based deploy scripts\n\n## 00.07.04-RPM\n* switched to new version numbers format\n  To make search/replace easier, I started with a new version format.\n  00.07.04-RPM ( -SNAPSHOT). The x.y.z is used in the same way, as before, but added RPM\n  and leading zeros to make this format different from others.\n  With this it is less possible to mix/change version numbers from \n  other dependencies. A **0.7.4** could be used from different \n  dependencies. ;-) \n\n## 0.7.3\n* dependency updates\n* added ```CompletableFutureQueue\u003cT, N\u003e thenCombineAsyncFromArray(Function\u003cR, N\u003e[] nextTransformations)```\n\n## 0.7.2\n* bug fix for **modules-info.java**\n\n## 0.7.1 - DONT USED THIS VERSION !! broken module-info.java\n* activated JIGSAW\n* updated to rapidpm-dependencies 4.0.2\n\n## 0.7.0 \u0026\u0026 0.7.0-JDK8-SNAPSHOT\n* started with JDK10/11 support\n* using JDK11 for development and JDK10 for deployment\n\n## 0.6.2\n* latest JDK8 only version! - switching to JDK10/11 -- JDK8 model\n\n## 0.6.1\n* Added docker scripts for cross JDK compiles\n* updates parent versions\n* deactivated nexus mirror for drone\n* deactivated orig IBM JDK 8/9 Docker images\n\n## 0.6.0\nThis release is a maintenance release only, no new functionality \n* switched to new dependencies version 0.6.3\n    * this includes the lic header plugin\n    * version updates\n    * minimized profiles\n    * removed indirect dependency to old nexus\n* updated all file headers\n\n## 0.5.3\n* added ```CheckedTriFunction\u003cT1, T2, T3, R\u003e extends TriFunction\u003cT1, T2, T3, Result\u003cR\u003e\u003e```\n* typo unCurryBifunction -\u003e unCurryBiFunction\n* typo unCurryTrifunction -\u003e unCurryTriFunction\n* curry / un-curry Checked Functions ```Transformations```\n    * curryCheckedBiFunction() - ```Function\u003cCheckedBiFunction\u003cA, B, R\u003e, Function\u003cA, CheckedFunction\u003cB, R\u003e\u003e\u003e```\n    * unCurryCheckedBiFunction() - ```Function\u003cFunction\u003cA, CheckedFunction\u003cB, R\u003e\u003e, CheckedBiFunction\u003cA, B, R\u003e\u003e```\n    * curryCheckedTriFunction() - ```Function\u003c\n            CheckedTriFunction\u003cA, B, C, R\u003e,\n            Function\u003cA, Function\u003cB, CheckedFunction\u003cC, R\u003e\u003e\u003e\u003e```\n    * unCurryCheckedTriFunction() - ```Function\u003c\n            Function\u003cA, Function\u003cB, CheckedFunction\u003cC, R\u003e\u003e\u003e,\n            CheckedTriFunction\u003cA, B, C, R\u003e\u003e``` \n    \n## 0.5.2\n* extend Result\u003cT\u003e with a fluent API\n    * void ifFailed -\u003e Result\u003cT\u003e ifFailed\n    * void ifPresent -\u003e Result\u003cT\u003e ifPresent\n    * void ifAbsent -\u003e Result\u003cT\u003e ifAbsent\n    \n## 0.5.1\n* renamed Tripel (german) to Triple (en)\n* pitest is working with junit5 now\n\n## 0.5.0\n* Result added ```void ifFailed(Consumer\u003cString\u003e failed);```\n* switched to jUnit5\n* updated parent pom to 3.5.7\n\n## 0.1.0\n* Result added ```\u003cU\u003e Result\u003cU\u003e asFailure()```\n* Result added ```\u003cU\u003e Result\u003cU\u003e flatMap(Function\u003cT, Result\u003cU\u003e\u003e mapper)```\n* ExceptionFunctions.message() extended exception message with Exception Classname\n* added CompletableFutureQueue\n\n## 0.0.6\n* ExceptionFunctions added ```Function\u003cException, String\u003e message()```\n* ExceptionFunctions added ```Function\u003cException, Stream\u003cStackTraceElement\u003e\u003e toStackTraceStream()```\n* added Sext and Sept data-classes\n\n## 0.0.5\n* added model.serial pkg with Data classes only for ```extends Serializable``` types\n* Transformations\n    + curry / unCurry - BiFunction / TriFunction\n* StreamFunctions added ```\u003cT\u003e Function\u003cPredicate\u003cT\u003e, Function\u003cStream\u003cT\u003e, Stream\u003cT\u003e\u003e\u003e streamFilter()```\n* Result.ofNullable\n* Result renamed ```bind(Consumer\u003cT\u003e success, Consumer\u003cString\u003e failure)``` \n        to \n        ```ifPresentOrElse(Consumer\u003cT\u003e success, Consumer\u003cString\u003e failure)```\n* Result added JDK9 signature ```ifPresentOrElse(Consumer\u003c? super T\u003e action, Runnable emptyAction)```\n* Result added JDK9 signature ```Stream\u003cT\u003e stream()```\n* Result added ```Result\u003cT\u003e or(Supplier\u003c? extends Result\u003c? extends T\u003e\u003e supplier)```\n* Result added ```void ifAbsent(Runnable action)```\n* Result added ```\u003cU\u003e Result\u003cU\u003e map(Function\u003c? super T, ? extends U\u003e mapper)```\n\n\n## 0.0.4\n* added Result.thenCombine\n* added Result.thenCombineAsync\n* added CheckedBiFunction\n\n## 0.0.3\n* added CheckedPredicate\n\n## 0.0.2\n* basic Datastructures like Pair, Triple, Quad\n* added fromOptional and toOptional to the class Result\n* added CheckedFunction , CheckedConsumer and CheckedSupplier\n* extracted TriFunction from Memoizer to pkg functions\n* added QuadFunction\n* added StringFunctions\n* added Transformations \n* added StringFunctions\n* ported Strman-java to functional style","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsvenruppert%2Ffunctional-reactive-lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsvenruppert%2Ffunctional-reactive-lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsvenruppert%2Ffunctional-reactive-lib/lists"}