├── LICENSE ├── README.md ├── config ├── compiler │ └── logback.xml ├── editor │ └── logback.xml └── router │ └── logback.xml ├── dc.sh ├── docker-compose.logging.yml ├── docker-compose.metrics.yml ├── docker-compose.postgres.yml ├── docker-compose.prod.yml ├── docker-compose.yml ├── libraries.json ├── logging ├── elasticsearch │ ├── Dockerfile │ └── config │ │ └── elasticsearch.yml ├── kibana │ ├── Dockerfile │ └── config │ │ └── kibana.yml └── logstash │ ├── Dockerfile │ ├── config │ └── logstash.yml │ └── pipeline │ └── logstash.conf ├── metrics └── Dockerfile └── samples ├── scalajs-react ├── 1.1 │ └── todo.scala └── 1.2 │ └── todo.scala └── slinky └── 0.4.3 └── todo.scala /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # scalafiddle-io 2 | Configuration repository for scalafiddle.io 3 | -------------------------------------------------------------------------------- /config/compiler/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | true 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /config/editor/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | true 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /config/router/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | true 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /dc.sh: -------------------------------------------------------------------------------- 1 | docker-compose -f docker-compose.yml -f docker-compose.prod.yml -f docker-compose.logging.yml -f docker-compose.metrics.yml "$@" 2 | -------------------------------------------------------------------------------- /docker-compose.logging.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | elasticsearch: 4 | build: logging/elasticsearch/ 5 | container_name: elasticsearch 6 | restart: always 7 | volumes: 8 | - logvolume:/usr/share/elasticsearch/data 9 | - ./logging/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml 10 | # Enable for direct access to ES 11 | # ports: 12 | # - "9200:9200" 13 | environment: 14 | ES_JAVA_OPTS: "-Xmx2g -Xms1g" 15 | 16 | logstash: 17 | build: logging/logstash/ 18 | container_name: logstash 19 | restart: always 20 | volumes: 21 | - ./logging/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml 22 | - ./logging/logstash/pipeline:/usr/share/logstash/pipeline 23 | environment: 24 | LS_JAVA_OPTS: "-Xmx256m -Xms256m" 25 | ports: 26 | - "5000:5000/udp" 27 | depends_on: 28 | - elasticsearch 29 | 30 | kibana: 31 | build: logging/kibana/ 32 | container_name: kibana 33 | volumes: 34 | - ./logging/kibana/config/:/usr/share/kibana/config 35 | ports: 36 | - "5611:5601" 37 | depends_on: 38 | - elasticsearch 39 | 40 | volumes: 41 | logvolume: 42 | -------------------------------------------------------------------------------- /docker-compose.metrics.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | metrics: 4 | build: metrics/ 5 | container_name: metrics 6 | ports: 7 | - "8060:80" 8 | - "8061:81" 9 | volumes: 10 | - metrics:/data 11 | 12 | volumes: 13 | metrics: 14 | -------------------------------------------------------------------------------- /docker-compose.postgres.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | postgres: 4 | image: postgres:9.6 5 | container_name: postgres 6 | volumes: 7 | - sfdata:/data 8 | environment: 9 | - PGDATA=/data/postgres 10 | - POSTGRES_PASSWORD 11 | -------------------------------------------------------------------------------- /docker-compose.prod.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | editor: 4 | environment: 5 | - SCALAFIDDLE_SQL_URL=jdbc:postgresql://${POSTGRES_SERVER}/scalafiddle 6 | - SCALAFIDDLE_COMPILER_URL=https://embed.scalafiddle.io 7 | - SCALAFIDDLE_AUTH_URL=https://scalafiddle.io/authenticate 8 | 9 | router: 10 | environment: 11 | - SCALAFIDDLE_SOURCE_URL=https://scalafiddle.io/raw/ 12 | - SCALAFIDDLE_EDIT_URL=https://scalafiddle.io/ 13 | - SCALAFIDDLE_EMBED_URL=https://embed.scalafiddle.io/ 14 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | editor: 4 | image: scalafiddle/scalafiddle-editor:latest 5 | restart: always 6 | container_name: editor 7 | volumes: 8 | - sfdata:/data 9 | - ./config/editor/logback.xml:/app/config/logback.xml 10 | ports: 11 | - "9000:9000" 12 | environment: 13 | - JAVA_OPTS=-Xmx1G 14 | - SCALAFIDDLE_SQL_URL=jdbc:postgresql://postgres/scalafiddle 15 | - SCALAFIDDLE_SQL_USER=scalafiddle 16 | - SCALAFIDDLE_SQL_PASSWORD 17 | - APPLICATION_SECRET 18 | - SCALAFIDDLE_SQL_CONFIG=postgre 19 | - SCALAFIDDLE_COMPILER_URL=https://embed.scalafiddle.io 20 | - SCALAFIDDLE_URL=https://scalafiddle.io 21 | - GITHUB_CLIENT_ID 22 | - GITHUB_CLIENT_SECRET 23 | - SCALAFIDDLE_AUTH_URL=https://scalafiddle.io/authenticate 24 | - SCALAFIDDLE_LIBRARIES_URL=https://raw.githubusercontent.com/scalafiddle/scalafiddle-io/master/libraries.json 25 | - SCALAFIDDLE_METRICS_STATSD_HOSTNAME=metrics 26 | logging: 27 | driver: gelf 28 | options: 29 | gelf-address: "udp://localhost:5000" 30 | 31 | router: 32 | image: scalafiddle/scalafiddle-router:latest 33 | depends_on: 34 | - editor 35 | restart: always 36 | container_name: router 37 | volumes: 38 | - sfdata:/data 39 | - ./config/router/logback.xml:/app/config/logback.xml 40 | ports: 41 | - "8888:8880" 42 | environment: 43 | - JAVA_OPTS=-Xmx1G 44 | - SCALAFIDDLE_LIBRARIES_URL=https://raw.githubusercontent.com/scalafiddle/scalafiddle-io/master/libraries.json 45 | - SCALAFIDDLE_CACHE_DIR=/data/router/cache 46 | - SCALAFIDDLE_SOURCE_URL=http://editor:9000/raw/ 47 | - SCALAFIDDLE_EDIT_URL=http://editor:9000/ 48 | - SCALAFIDDLE_METRICS_STATSD_HOSTNAME=metrics 49 | - SCALAFIDDLE_SECRET 50 | logging: 51 | driver: gelf 52 | options: 53 | gelf-address: "udp://localhost:5000" 54 | 55 | compiler-2.12-sjs0.6: 56 | image: scalafiddle/scalafiddle-core-2.12-sjs0.6:latest 57 | depends_on: 58 | - router 59 | restart: always 60 | volumes: 61 | - sfdata:/data 62 | - ./config/compiler/logback.xml:/app/config/logback.xml 63 | environment: 64 | - JAVA_OPTS=-Xmx3G 65 | - SCALAFIDDLE_ROUTER_URL=ws://router:8880/compiler 66 | - COURSIER_CACHE=/data/compiler/coursier 67 | - SCALAFIDDLE_LIBCACHE=/data/compiler/extlibs 68 | - SCALAFIDDLE_METRICS_STATSD_HOSTNAME=metrics 69 | - SCALAFIDDLE_SECRET 70 | logging: 71 | driver: gelf 72 | options: 73 | gelf-address: "udp://localhost:5000" 74 | 75 | compiler-2.12-sjs1: 76 | image: scalafiddle/scalafiddle-core-2.12-sjs1:latest 77 | depends_on: 78 | - router 79 | restart: always 80 | volumes: 81 | - sfdata:/data 82 | - ./config/compiler/logback.xml:/app/config/logback.xml 83 | environment: 84 | - JAVA_OPTS=-Xmx3G 85 | - SCALAFIDDLE_ROUTER_URL=ws://router:8880/compiler 86 | - COURSIER_CACHE=/data/compiler/coursier 87 | - SCALAFIDDLE_LIBCACHE=/data/compiler/extlibs 88 | - SCALAFIDDLE_METRICS_STATSD_HOSTNAME=metrics 89 | - SCALAFIDDLE_SECRET 90 | logging: 91 | driver: gelf 92 | options: 93 | gelf-address: "udp://localhost:5000" 94 | 95 | compiler-2.11-sjs0.6: 96 | image: scalafiddle/scalafiddle-core-2.11-sjs0.6:latest 97 | depends_on: 98 | - router 99 | restart: always 100 | volumes: 101 | - sfdata:/data 102 | - ./config/compiler/logback.xml:/app/config/logback.xml 103 | environment: 104 | - JAVA_OPTS=-Xmx3G 105 | - SCALAFIDDLE_ROUTER_URL=ws://router:8880/compiler 106 | - COURSIER_CACHE=/data/compiler/coursier 107 | - SCALAFIDDLE_LIBCACHE=/data/compiler/extlibs 108 | - SCALAFIDDLE_METRICS_STATSD_HOSTNAME=metrics 109 | - SCALAFIDDLE_SECRET 110 | logging: 111 | driver: gelf 112 | options: 113 | gelf-address: "udp://localhost:5000" 114 | 115 | volumes: 116 | sfdata: 117 | -------------------------------------------------------------------------------- /libraries.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "group": "Web", 4 | "libraries": [ 5 | { 6 | "name": "Slinky", 7 | "organization": "me.shadaj", 8 | "artifact": "slinky-core", 9 | "doc": "https://slinky.shadaj.me", 10 | "versions": [ 11 | { 12 | "version": "0.6.3", 13 | "scalaVersions": ["2.12"], 14 | "extraDeps": [ 15 | "me.shadaj %%% slinky-web % 0.6.3" 16 | ], 17 | "jsDeps": [ 18 | "react % 16.9.0 % https://cdnjs.cloudflare.com/ajax/libs/react/16.9.0/umd/react.development.js", 19 | "react-dom % 16.9.0 % https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.9.0/umd/react-dom.development.js" 20 | ], 21 | "example":"https://raw.githubusercontent.com/scalafiddle/scalafiddle-io/master/samples/slinky/0.4.3/todo.scala" 22 | }, 23 | { 24 | "version": "0.5.0", 25 | "scalaVersions": ["2.12"], 26 | "extraDeps": [ 27 | "me.shadaj %%% slinky-web % 0.5.0" 28 | ], 29 | "jsDeps": [ 30 | "react % 16.4.2 % https://cdnjs.cloudflare.com/ajax/libs/react/16.4.2/umd/react.development.js", 31 | "react-dom % 16.4.2 % https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.4.2/umd/react-dom.development.js" 32 | ], 33 | "example":"https://raw.githubusercontent.com/scalafiddle/scalafiddle-io/master/samples/slinky/0.4.3/todo.scala" 34 | }, 35 | { 36 | "version": "0.4.3", 37 | "scalaVersions": ["2.12"], 38 | "extraDeps": [ 39 | "me.shadaj %%% slinky-web % 0.4.3" 40 | ], 41 | "jsDeps": [ 42 | "react % 16.3.2 % https://cdnjs.cloudflare.com/ajax/libs/react/16.3.0/umd/react.development.js", 43 | "react-dom % 16.3.2 % https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.3.0/umd/react-dom.development.js" 44 | ], 45 | "example":"https://raw.githubusercontent.com/scalafiddle/scalafiddle-io/master/samples/slinky/0.4.3/todo.scala" 46 | } 47 | ], 48 | "compileTimeOnly": false 49 | }, 50 | { 51 | "name": "Scala.js React", 52 | "organization": "com.github.japgolly.scalajs-react", 53 | "artifact": "core", 54 | "doc": "japgolly/scalajs-react", 55 | "versions": [ 56 | { 57 | "version": "1.4.2", 58 | "scalaVersions": ["2.12"], 59 | "extraDeps": [ 60 | "com.github.japgolly.scalajs-react %%% extra % 1.4.2" 61 | ], 62 | "jsDeps": [ 63 | "react % 16.7.0 % https://cdnjs.cloudflare.com/ajax/libs/react/16.7.0/umd/react.development.js", 64 | "react-dom % 16.7.0 % https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.7.0/umd/react-dom.development.js" 65 | ], 66 | "example":"https://raw.githubusercontent.com/scalafiddle/scalafiddle-io/master/samples/scalajs-react/1.2/todo.scala" 67 | }, 68 | { 69 | "version": "1.2.0", 70 | "scalaVersions": ["2.11", "2.12"], 71 | "extraDeps": [ 72 | "com.github.japgolly.scalajs-react %%% extra % 1.2.0" 73 | ], 74 | "jsDeps": [ 75 | "react % 16.3.0 % https://cdnjs.cloudflare.com/ajax/libs/react/16.3.0/umd/react.development.js", 76 | "react-dom % 16.3.0 % https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.3.0/umd/react-dom.development.js" 77 | ], 78 | "example":"https://raw.githubusercontent.com/scalafiddle/scalafiddle-io/master/samples/scalajs-react/1.2/todo.scala" 79 | }, 80 | { 81 | "version": "1.1.1", 82 | "scalaVersions": ["2.11", "2.12"], 83 | "extraDeps": [ 84 | "com.github.japgolly.scalajs-react %%% extra % 1.1.1" 85 | ], 86 | "jsDeps": [ 87 | "react % 15.6.1 % https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react-with-addons.min.js", 88 | "react-dom % 15.6.1 % https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react-dom.min.js" 89 | ], 90 | "example":"https://raw.githubusercontent.com/scalafiddle/scalafiddle-io/master/samples/scalajs-react/1.1/todo.scala" 91 | } 92 | ], 93 | "compileTimeOnly": false 94 | }, 95 | { 96 | "name": "React Components", 97 | "organization": "com.olvind", 98 | "artifact": "scalajs-react-components", 99 | "doc": "chandu0101/scalajs-react-components", 100 | "versions": [ 101 | { 102 | "version": "1.0.0-M2", 103 | "scalaVersions": ["2.12"], 104 | "extraDeps": [ 105 | ], 106 | "jsDeps": [ 107 | "react % 15.6.1 % https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react-with-addons.min.js", 108 | "react-dom % 15.6.1 % https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react-dom.min.js" 109 | ], 110 | "cssDeps": [ 111 | "semantic-ui % 2.2.4 % https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.12/semantic.min.css" 112 | ] 113 | } 114 | ], 115 | "compileTimeOnly": false 116 | }, 117 | { 118 | "name": "Diode", 119 | "organization": "io.suzaku", 120 | "artifact": "diode", 121 | "doc": "https://diode.suzaku.io", 122 | "versions": [ 123 | { 124 | "version": "1.1.5", 125 | "scalaVersions": ["2.12"] 126 | }, 127 | { 128 | "version": "1.1.3", 129 | "scalaVersions": ["2.11", "2.12"] 130 | }, 131 | { 132 | "version": "1.1.2", 133 | "scalaVersions": ["2.11", "2.12"] 134 | }, 135 | { 136 | "version": "1.1.0", 137 | "organization": "me.chrons", 138 | "scalaVersions": ["2.11", "2.12"] 139 | }, 140 | { 141 | "version": "1.0.0", 142 | "organization": "me.chrons", 143 | "scalaVersions": ["2.11"] 144 | } 145 | ], 146 | "compileTimeOnly": false 147 | }, 148 | { 149 | "name": "ScalaCSS", 150 | "organization": "com.github.japgolly.scalacss", 151 | "artifact": "core", 152 | "doc": "https://japgolly.github.io/scalacss/book/", 153 | "versions": [ 154 | { 155 | "version": "0.5.3", 156 | "scalaVersions": ["2.11", "2.12"] 157 | }, 158 | { 159 | "version": "0.4.1", 160 | "scalaVersions": ["2.11"] 161 | } 162 | ], 163 | "compileTimeOnly": false 164 | }, 165 | { 166 | "name": "Widok", 167 | "organization": "io.github.widok", 168 | "artifact": "widok", 169 | "doc": "https://widok.github.io", 170 | "versions": [ 171 | { 172 | "version": "0.2.4", 173 | "scalaVersions": ["2.11"] 174 | } 175 | ], 176 | "compileTimeOnly": false 177 | }, 178 | { 179 | "name": "Udash", 180 | "organization": "io.udash", 181 | "artifact": "udash-core", 182 | "doc": "https://udash.io", 183 | "versions": [ 184 | { 185 | "version": "0.8.1", 186 | "scalaVersions": ["2.11", "2.12"], 187 | "extraDeps": [ 188 | "io.udash %%% udash-auth % 0.8.1", 189 | "io.udash %%% udash-bootstrap4 % 0.8.1", 190 | "io.udash %%% udash-charts % 0.8.1", 191 | "io.udash %%% udash-css % 0.8.1", 192 | "io.udash %%% udash-i18n % 0.8.1", 193 | "io.udash %%% udash-rpc % 0.8.1", 194 | "io.udash %%% udash-rest % 0.8.1" 195 | ], 196 | "jsDeps": [ 197 | "bootstrap % 4.1.3 % https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js", 198 | "jquery % 3.3.1 % https://code.jquery.com/jquery-3.3.1.min.js", 199 | "highcharts % 5.0.14 % https://code.highcharts.com/5.0.14/highcharts.js", 200 | "highcharts-3d % 5.0.14 % https://code.highcharts.com/5.0.14/highcharts-3d.js", 201 | "highcharts-more % 5.0.14 % https://code.highcharts.com/5.0.14/highcharts-more.js", 202 | "highcharts-exporting % 5.0.14 % https://code.highcharts.com/5.0.14/modules/exporting.js", 203 | "highcharts-drilldown % 5.0.14 % https://code.highcharts.com/5.0.14/modules/drilldown.js", 204 | "highcharts-heatmap % 5.0.14 % https://code.highcharts.com/5.0.14/modules/heatmap.js" 205 | ], 206 | "cssDeps": [ 207 | "bootstrap % 4.1.3 % https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" 208 | ] 209 | }, 210 | { 211 | "version": "0.7.1", 212 | "artifact": "udash-core-frontend", 213 | "scalaVersions": ["2.11", "2.12"], 214 | "extraDeps": [ 215 | "io.udash %%% udash-auth-frontend % 0.7.1", 216 | "io.udash %%% udash-bootstrap % 0.7.1", 217 | "io.udash %%% udash-charts % 0.7.1", 218 | "io.udash %%% udash-css-frontend % 0.7.1", 219 | "io.udash %%% udash-i18n-frontend % 0.7.1", 220 | "io.udash %%% udash-rpc-frontend % 0.7.1", 221 | "io.udash %%% udash-rest-shared % 0.7.1" 222 | ], 223 | "jsDeps": [ 224 | "bootstrap % 3.3.7 % https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js", 225 | "jquery % 3.3.1 % https://code.jquery.com/jquery-3.3.1.min.js", 226 | "highcharts % 5.0.10 % https://code.highcharts.com/5.0.10/highcharts.js", 227 | "highcharts-3d % 5.0.10 % https://code.highcharts.com/5.0.10/highcharts-3d.js", 228 | "highcharts-more % 5.0.10 % https://code.highcharts.com/5.0.10/highcharts-more.js", 229 | "highcharts-exporting % 5.0.10 % https://code.highcharts.com/5.0.10/modules/exporting.js", 230 | "highcharts-drilldown % 5.0.10 % https://code.highcharts.com/5.0.10/modules/drilldown.js", 231 | "highcharts-heatmap % 5.0.10 % https://code.highcharts.com/5.0.10/modules/heatmap.js" 232 | ], 233 | "cssDeps": [ 234 | "bootstrap % 3.3.7 % https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" 235 | ] 236 | }, 237 | { 238 | "version": "0.6.0", 239 | "artifact": "udash-core-frontend", 240 | "scalaVersions": ["2.11", "2.12"], 241 | "extraDeps": [ 242 | "io.udash %%% udash-auth-frontend % 0.6.0", 243 | "io.udash %%% udash-bootstrap % 0.6.0", 244 | "io.udash %%% udash-charts % 0.6.0", 245 | "io.udash %%% udash-i18n-frontend % 0.6.0", 246 | "io.udash %%% udash-rpc-frontend % 0.6.0", 247 | "io.udash %%% udash-rest-shared % 0.6.0" 248 | ] 249 | }, 250 | { 251 | "version": "0.5.0", 252 | "artifact": "udash-core-frontend", 253 | "scalaVersions": ["2.11", "2.12"], 254 | "extraDeps": [ 255 | "io.udash %%% udash-bootstrap % 0.5.0", 256 | "io.udash %%% udash-charts % 0.5.0", 257 | "io.udash %%% udash-i18n-frontend % 0.5.0", 258 | "io.udash %%% udash-rpc-frontend % 0.5.0", 259 | "io.udash %%% udash-rest-shared % 0.5.0" 260 | ] 261 | }, 262 | { 263 | "version": "0.4.0", 264 | "artifact": "udash-core-frontend", 265 | "scalaVersions": ["2.11"], 266 | "extraDeps": [ 267 | "io.udash %%% udash-bootstrap % 0.4.0", 268 | "io.udash %%% udash-i18n-frontend % 0.4.0", 269 | "io.udash %%% udash-rpc-frontend % 0.4.0", 270 | "io.udash %%% udash-rest-shared % 0.4.0" 271 | ] 272 | }, 273 | { 274 | "version": "0.3.1", 275 | "artifact": "udash-core-frontend", 276 | "scalaVersions": ["2.11"], 277 | "extraDeps": [ 278 | "io.udash %%% udash-bootstrap % 0.3.1", 279 | "io.udash %%% udash-i18n-frontend % 0.3.1", 280 | "io.udash %%% udash-rpc-frontend % 0.3.1", 281 | "io.udash %%% udash-rest-shared % 0.3.1" 282 | ] 283 | } 284 | ], 285 | "compileTimeOnly": false 286 | }, 287 | { 288 | "name": "Laminar", 289 | "organization": "com.raquo", 290 | "artifact": "laminar", 291 | "doc": "https://github.com/raquo/Laminar", 292 | "versions": [ 293 | { 294 | "version": "0.9.0", 295 | "scalaVersions": ["2.12", "2.13"], 296 | "scalaJSVersions": ["1"] 297 | }, 298 | { 299 | "version": "0.7.2", 300 | "scalaVersions": ["2.12"] 301 | }, 302 | { 303 | "version": "0.7", 304 | "scalaVersions": ["2.12"] 305 | }, 306 | { 307 | "version": "0.6", 308 | "scalaVersions": ["2.12"] 309 | }, 310 | { 311 | "version": "0.4", 312 | "scalaVersions": ["2.11", "2.12"] 313 | } 314 | ], 315 | "compileTimeOnly": false 316 | } 317 | ] 318 | }, 319 | { 320 | "group": "Functional & type-level", 321 | "libraries": [ 322 | { 323 | "name": "Quicklens", 324 | "organization": "com.softwaremill.quicklens", 325 | "artifact": "quicklens", 326 | "doc": "adamw/quicklens", 327 | "versions": [ 328 | { 329 | "version": "1.4.11", 330 | "scalaVersions": ["2.11", "2.12"] 331 | } 332 | ], 333 | "compileTimeOnly": false 334 | }, 335 | { 336 | "name": "Matryoshka", 337 | "organization": "com.slamdata", 338 | "artifact": "matryoshka-core", 339 | "doc": "slamdata/matryoshka", 340 | "versions": [ 341 | { 342 | "version": "0.18.3", 343 | "scalaVersions": ["2.11", "2.12"] 344 | } 345 | ], 346 | "compileTimeOnly": false 347 | }, 348 | { 349 | "name": "Squants", 350 | "organization": "org.typelevel", 351 | "artifact": "squants", 352 | "doc": "http://www.squants.com/", 353 | "versions": [ 354 | { 355 | "version": "1.3.0", 356 | "scalaVersions": ["2.11", "2.12"] 357 | } 358 | ], 359 | "compileTimeOnly": false 360 | }, 361 | { 362 | "name": "Refined", 363 | "organization": "eu.timepit", 364 | "artifact": "refined", 365 | "doc": "fthomas/refined", 366 | "versions": [ 367 | { 368 | "version": "0.9.10", 369 | "scalaVersions": ["2.12"] 370 | }, 371 | { 372 | "version": "0.9.0", 373 | "scalaVersions": ["2.11", "2.12"] 374 | }, 375 | { 376 | "version": "0.8.4", 377 | "scalaVersions": ["2.11", "2.12"] 378 | } 379 | ], 380 | "compileTimeOnly": false 381 | }, 382 | { 383 | "name": "Simulacrum", 384 | "organization": "com.github.mpilquist", 385 | "artifact": "simulacrum", 386 | "doc": "mpilquist/simulacrum", 387 | "versions": [ 388 | { 389 | "version": "0.11.0", 390 | "scalaVersions": ["2.11", "2.12"] 391 | } 392 | ], 393 | "compileTimeOnly": false 394 | }, 395 | { 396 | "name": "Spire", 397 | "organization": "org.typelevel", 398 | "artifact": "spire", 399 | "doc": "non/spire", 400 | "versions": [ 401 | { 402 | "version": "0.14.1", 403 | "scalaVersions": ["2.11", "2.12"] 404 | } 405 | ], 406 | "compileTimeOnly": false 407 | }, 408 | { 409 | "name": "Cats", 410 | "organization": "org.typelevel", 411 | "artifact": "cats-core", 412 | "doc": "https://typelevel.org/cats/", 413 | "versions": [ 414 | { 415 | "version": "2.1.0", 416 | "scalaVersions": ["2.12"] 417 | }, 418 | { 419 | "version": "1.3.1", 420 | "scalaVersions": ["2.11", "2.12"] 421 | }, 422 | { 423 | "version": "1.3.0", 424 | "scalaVersions": ["2.11", "2.12"] 425 | }, 426 | { 427 | "version": "1.2.0", 428 | "scalaVersions": ["2.11", "2.12"] 429 | }, 430 | { 431 | "version": "1.1.0", 432 | "scalaVersions": ["2.11", "2.12"] 433 | }, 434 | { 435 | "version": "1.0.1", 436 | "scalaVersions": ["2.11", "2.12"] 437 | }, 438 | { 439 | "version": "0.7.2", 440 | "artifact": "cats", 441 | "scalaVersions": ["2.11"] 442 | }, 443 | { 444 | "version": "0.6.1", 445 | "artifact": "cats", 446 | "scalaVersions": ["2.11"] 447 | } 448 | ], 449 | "compileTimeOnly": false 450 | }, 451 | { 452 | "name": "Cats Effect", 453 | "organization": "org.typelevel", 454 | "artifact": "cats-effect", 455 | "doc": "typelevel/cats-effect", 456 | "versions": [ 457 | { 458 | "version": "2.0.0", 459 | "scalaVersions": ["2.12"] 460 | }, 461 | { 462 | "version": "1.0.0", 463 | "scalaVersions": ["2.11", "2.12"] 464 | }, 465 | { 466 | "version": "1.0.0-RC", 467 | "scalaVersions": ["2.11", "2.12"] 468 | }, 469 | { 470 | "version": "0.5", 471 | "scalaVersions": ["2.11", "2.12"] 472 | }, 473 | { 474 | "version": "0.4", 475 | "scalaVersions": ["2.11", "2.12"] 476 | } 477 | ], 478 | "compileTimeOnly": false 479 | }, 480 | { 481 | "name": "Cats MTL", 482 | "organization": "org.typelevel", 483 | "artifact": "cats-mtl-core", 484 | "doc": "typelevel/cats-mtl", 485 | "versions": [ 486 | { 487 | "version": "0.7.0", 488 | "scalaVersions": ["2.12"] 489 | }, 490 | { 491 | "version": "0.4.0", 492 | "scalaVersions": ["2.11", "2.12"] 493 | } 494 | ], 495 | "compileTimeOnly": false 496 | }, 497 | { 498 | "name": "Scalaz", 499 | "organization": "org.scalaz", 500 | "artifact": "scalaz-core", 501 | "doc": "scalaz/scalaz", 502 | "versions": [ 503 | { 504 | "version": "7.2.29", 505 | "scalaVersions": ["2.12"] 506 | }, 507 | { 508 | "version": "7.2.16", 509 | "scalaVersions": ["2.11", "2.12"] 510 | }, 511 | { 512 | "version": "7.2.12", 513 | "scalaVersions": ["2.11", "2.12"] 514 | }, 515 | { 516 | "version": "7.2.1", 517 | "scalaVersions": ["2.11"] 518 | } 519 | ], 520 | "compileTimeOnly": false 521 | }, 522 | { 523 | "name": "Each", 524 | "organization": "com.thoughtworks.each", 525 | "artifact": "each", 526 | "doc": "ThoughtWorksInc/each", 527 | "versions": [ 528 | { 529 | "version": "3.3.1", 530 | "scalaVersions": ["2.11", "2.12"] 531 | }, 532 | { 533 | "version": "3.0.1", 534 | "scalaVersions": ["2.11"] 535 | } 536 | ], 537 | "compileTimeOnly": false 538 | }, 539 | { 540 | "name": "Shapeless", 541 | "organization": "com.chuusai", 542 | "artifact": "shapeless", 543 | "doc": "milessabin/shapeless", 544 | "versions": [ 545 | { 546 | "version": "2.3.3", 547 | "scalaVersions": ["2.11", "2.12"] 548 | }, 549 | { 550 | "version": "2.3.2", 551 | "scalaVersions": ["2.11", "2.12"] 552 | }, 553 | { 554 | "version": "2.2.5", 555 | "scalaVersions": ["2.11"] 556 | } 557 | ], 558 | "compileTimeOnly": false 559 | }, 560 | { 561 | "name": "FS2", 562 | "organization": "co.fs2", 563 | "artifact": "fs2-core", 564 | "doc": "functional-streams-for-scala/fs2", 565 | "versions": [ 566 | { 567 | "version": "2.2.1", 568 | "scalaVersions": ["2.12"] 569 | }, 570 | { 571 | "version": "2.1.0", 572 | "scalaVersions": ["2.12"] 573 | }, 574 | { 575 | "version": "0.10.0-M7", 576 | "scalaVersions": ["2.11", "2.12"] 577 | }, 578 | { 579 | "version": "0.9.7", 580 | "scalaVersions": ["2.11", "2.12"] 581 | }, 582 | { 583 | "version": "0.9.5", 584 | "scalaVersions": ["2.11", "2.12"] 585 | }, 586 | { 587 | "version": "0.9.0-RC1", 588 | "scalaVersions": ["2.11"] 589 | } 590 | ], 591 | "compileTimeOnly": false 592 | }, 593 | { 594 | "name": "Monix", 595 | "organization": "io.monix", 596 | "artifact": "monix", 597 | "doc": "https://monix.io/", 598 | "versions": [ 599 | { 600 | "version": "3.1.0", 601 | "scalaVersions": ["2.12"] 602 | }, 603 | { 604 | "version": "3.0.0-M1", 605 | "scalaVersions": ["2.11", "2.12"] 606 | }, 607 | { 608 | "version": "2.3.0", 609 | "scalaVersions": ["2.11", "2.12"] 610 | }, 611 | { 612 | "version": "2.0.0", 613 | "scalaVersions": ["2.11"] 614 | } 615 | ], 616 | "compileTimeOnly": false 617 | }, 618 | { 619 | "name": "Monocle", 620 | "organization": "com.github.julien-truffaut", 621 | "artifact": "monocle-core", 622 | "doc": "https://julien-truffaut.github.io/Monocle/", 623 | "versions": [ 624 | { 625 | "version": "2.0.0", 626 | "scalaVersions": ["2.12"], 627 | "extraDeps": [ 628 | "com.github.julien-truffaut %%% monocle-macro % 2.0.0", 629 | "com.github.julien-truffaut %%% monocle-law % 2.0.0" 630 | ] 631 | }, 632 | { 633 | "version": "1.5.0-cats-M1", 634 | "scalaVersions": ["2.11", "2.12"], 635 | "extraDeps": [ 636 | "com.github.julien-truffaut %%% monocle-macro % 1.5.0-cats-M1", 637 | "com.github.julien-truffaut %%% monocle-law % 1.5.0-cats-M1" 638 | ] 639 | }, 640 | { 641 | "version": "1.4.0", 642 | "scalaVersions": ["2.11", "2.12"], 643 | "extraDeps": [ 644 | "com.github.julien-truffaut %%% monocle-macro % 1.4.0", 645 | "com.github.julien-truffaut %%% monocle-law % 1.4.0" 646 | ] 647 | } 648 | ], 649 | "compileTimeOnly": false 650 | }, 651 | { 652 | "name": "Hamsters", 653 | "organization": "io.github.scala-hamsters", 654 | "artifact": "hamsters", 655 | "doc": "scala-hamsters/hamsters", 656 | "versions": [ 657 | { 658 | "version": "2.6.0", 659 | "scalaVersions": ["2.11", "2.12"] 660 | }, 661 | { 662 | "version": "2.5.0", 663 | "scalaVersions": ["2.11", "2.12"] 664 | } 665 | ], 666 | "compileTimeOnly": false 667 | }, 668 | { 669 | "name": "ZIO", 670 | "organization": "dev.zio", 671 | "artifact": "zio", 672 | "doc": "https://zio.dev", 673 | "versions": [ 674 | { 675 | "version": "1.0.0-RC17", 676 | "scalaVersions": ["2.12"], 677 | "extraDeps": [ 678 | "dev.zio %%% zio-streams % 1.0.0-RC17" 679 | ] 680 | } 681 | ], 682 | "compileTimeOnly": false 683 | } 684 | ] 685 | }, 686 | { 687 | "group": "FRP", 688 | "libraries": [ 689 | { 690 | "name": "Scala.Rx", 691 | "organization": "com.lihaoyi", 692 | "artifact": "scalarx", 693 | "doc": "lihaoyi/scala.rx", 694 | "versions": [ 695 | { 696 | "version": "0.3.2", 697 | "scalaVersions": ["2.11", "2.12"] 698 | }, 699 | { 700 | "version": "0.3.1", 701 | "scalaVersions": ["2.11"] 702 | } 703 | ], 704 | "compileTimeOnly": false 705 | }, 706 | { 707 | "name": "MetaRx", 708 | "organization": "pl.metastack", 709 | "artifact": "metarx", 710 | "doc": "MetaStack-pl/MetaRx", 711 | "versions": [ 712 | { 713 | "version": "0.1.7", 714 | "scalaVersions": ["2.11"] 715 | } 716 | ], 717 | "compileTimeOnly": false 718 | }, 719 | { 720 | "name": "Reactify", 721 | "organization": "com.outr", 722 | "artifact": "reactify", 723 | "doc": "outr/reactify", 724 | "versions": [ 725 | { 726 | "version": "3.0.2", 727 | "scalaVersions": ["2.11", "2.12"] 728 | } 729 | ], 730 | "compileTimeOnly": false 731 | }, 732 | { 733 | "name": "OutWatch", 734 | "organization": "io.github.outwatch", 735 | "artifact": "outwatch", 736 | "doc": "https://outwatch.github.io/?lang=scala", 737 | "versions": [ 738 | { 739 | "version": "0.10.2", 740 | "scalaVersions": ["2.11", "2.12"] 741 | }, 742 | { 743 | "version": "0.9.4", 744 | "scalaVersions": ["2.11", "2.12"] 745 | }, 746 | { 747 | "version": "0.9.0", 748 | "scalaVersions": ["2.11", "2.12"] 749 | } 750 | ], 751 | "compileTimeOnly": false 752 | }, 753 | { 754 | "name": "Owlet", 755 | "organization": "us.oyanglul", 756 | "artifact": "owlet", 757 | "doc": "https://oyanglul.us/owlet", 758 | "versions": [ 759 | { 760 | "version": "0.3.1", 761 | "scalaVersions": ["2.12"] 762 | } 763 | ], 764 | "compileTimeOnly": false 765 | }, 766 | { 767 | "name": "Binding.scala", 768 | "organization": "com.thoughtworks.binding", 769 | "artifact": "binding", 770 | "doc": "ThoughtWorksInc/Binding.scala", 771 | "versions": [ 772 | { 773 | "version": "11.8.1", 774 | "scalaVersions": ["2.11", "2.12"], 775 | "extraDeps": [ 776 | "com.thoughtworks.binding %%% route % 11.8.1", 777 | "com.thoughtworks.binding %%% dom % 11.8.1", 778 | "com.thoughtworks.binding %%% futurebinding % 11.8.1", 779 | "com.thoughtworks.binding %%% jspromisebinding % 11.8.1" 780 | ] 781 | }, 782 | { 783 | "version": "11.6.0", 784 | "scalaVersions": ["2.11", "2.12"], 785 | "extraDeps": [ 786 | "com.thoughtworks.binding %%% route % 11.6.0", 787 | "com.thoughtworks.binding %%% dom % 11.6.0", 788 | "com.thoughtworks.binding %%% futurebinding % 11.6.0", 789 | "com.thoughtworks.binding %%% jspromisebinding % 11.6.0" 790 | ] 791 | }, 792 | { 793 | "version": "11.0.0", 794 | "scalaVersions": ["2.11", "2.12"], 795 | "extraDeps": [ 796 | "com.thoughtworks.binding %%% route % 11.0.0", 797 | "com.thoughtworks.binding %%% dom % 11.0.0", 798 | "com.thoughtworks.binding %%% futurebinding % 11.0.0", 799 | "com.thoughtworks.binding %%% jspromisebinding % 11.0.0" 800 | ] 801 | }, 802 | { 803 | "version": "10.0.3", 804 | "scalaVersions": ["2.11", "2.12"], 805 | "extraDeps": [ 806 | "com.thoughtworks.binding %%% route % 10.0.3", 807 | "com.thoughtworks.binding %%% dom % 10.0.3", 808 | "com.thoughtworks.binding %%% futurebinding % 10.0.3", 809 | "com.thoughtworks.binding %%% jspromisebinding % 10.0.3" 810 | ] 811 | }, 812 | { 813 | "version": "10.0.2", 814 | "scalaVersions": ["2.11", "2.12"], 815 | "extraDeps": [ 816 | "com.thoughtworks.binding %%% route % 10.0.2", 817 | "com.thoughtworks.binding %%% dom % 10.0.2", 818 | "com.thoughtworks.binding %%% futurebinding % 10.0.2", 819 | "com.thoughtworks.binding %%% jspromisebinding % 10.0.2" 820 | ] 821 | }, 822 | { 823 | "version": "10.0.1", 824 | "scalaVersions": ["2.11", "2.12"], 825 | "extraDeps": [ 826 | "com.thoughtworks.binding %%% route % 10.0.1", 827 | "com.thoughtworks.binding %%% dom % 10.0.1", 828 | "com.thoughtworks.binding %%% futurebinding % 10.0.1", 829 | "com.thoughtworks.binding %%% jspromisebinding % 10.0.1" 830 | ] 831 | }, 832 | { 833 | "version": "10.0.0", 834 | "scalaVersions": ["2.11", "2.12"], 835 | "extraDeps": [ 836 | "com.thoughtworks.binding %%% route % 10.0.0", 837 | "com.thoughtworks.binding %%% dom % 10.0.0", 838 | "com.thoughtworks.binding %%% futurebinding % 10.0.0", 839 | "com.thoughtworks.binding %%% jspromisebinding % 10.0.0" 840 | ] 841 | }, 842 | { 843 | "version": "9.0.4", 844 | "scalaVersions": ["2.11", "2.12"], 845 | "extraDeps": [ 846 | "com.thoughtworks.binding %%% dom % 9.0.4", 847 | "com.thoughtworks.binding %%% futurebinding % 9.0.4", 848 | "com.thoughtworks.binding %%% jspromisebinding % 9.0.4" 849 | ] 850 | }, 851 | { 852 | "version": "9.0.3", 853 | "scalaVersions": ["2.11"], 854 | "extraDeps": [ 855 | "com.thoughtworks.binding %%% dom % 9.0.3", 856 | "com.thoughtworks.binding %%% futurebinding % 9.0.3", 857 | "com.thoughtworks.binding %%% jspromisebinding % 9.0.3" 858 | ] 859 | }, 860 | { 861 | "version": "9.0.2", 862 | "scalaVersions": ["2.11"], 863 | "extraDeps": [ 864 | "com.thoughtworks.binding %%% dom % 9.0.2", 865 | "com.thoughtworks.binding %%% futurebinding % 9.0.2", 866 | "com.thoughtworks.binding %%% jspromisebinding % 9.0.2" 867 | ] 868 | }, 869 | { 870 | "version": "9.0.0", 871 | "scalaVersions": ["2.11"], 872 | "extraDeps": [ 873 | "com.thoughtworks.binding %%% dom % 9.0.0", 874 | "com.thoughtworks.binding %%% futurebinding % 9.0.0", 875 | "com.thoughtworks.binding %%% jspromisebinding % 9.0.0" 876 | ] 877 | } 878 | ], 879 | "compileTimeOnly": false 880 | }, 881 | { 882 | "name": "bindable.scala", 883 | "organization": "com.thoughtworks.binding", 884 | "artifact": "bindable", 885 | "doc": "ThoughtWorksInc/bindable.scala", 886 | "versions": [ 887 | { 888 | "version": "1.0.1", 889 | "scalaVersions": ["2.11", "2.12"] 890 | } 891 | ], 892 | "compileTimeOnly": false 893 | } 894 | ] 895 | }, 896 | { 897 | "group": "Serialization", 898 | "libraries": [ 899 | { 900 | "name": "BooPickle", 901 | "organization": "io.suzaku", 902 | "artifact": "boopickle", 903 | "doc": "https://boopickle.suzaku.io", 904 | "versions": [ 905 | { 906 | "version": "1.3.0", 907 | "scalaVersions": ["2.11", "2.12"] 908 | }, 909 | { 910 | "version": "1.2.6", 911 | "scalaVersions": ["2.11", "2.12"] 912 | }, 913 | { 914 | "version": "1.2.5", 915 | "scalaVersions": ["2.11", "2.12"], 916 | "organization": "me.chrons" 917 | }, 918 | { 919 | "version": "1.2.4", 920 | "scalaVersions": ["2.11"], 921 | "organization": "me.chrons" 922 | } 923 | ], 924 | "compileTimeOnly": false 925 | }, 926 | { 927 | "name": "uPickle", 928 | "organization": "com.lihaoyi", 929 | "artifact": "upickle", 930 | "doc": "lihaoyi/upickle", 931 | "versions": [ 932 | { 933 | "version": "0.9.5", 934 | "scalaVersions": ["2.12"] 935 | }, 936 | { 937 | "version": "0.7.1", 938 | "scalaVersions": ["2.11", "2.12"] 939 | }, 940 | { 941 | "version": "0.6.6", 942 | "scalaVersions": ["2.11", "2.12"] 943 | }, 944 | { 945 | "version": "0.5.1", 946 | "scalaVersions": ["2.11", "2.12"] 947 | }, 948 | { 949 | "version": "0.4.4", 950 | "scalaVersions": ["2.11", "2.12"] 951 | }, 952 | { 953 | "version": "0.4.3", 954 | "scalaVersions": ["2.11"] 955 | }, 956 | { 957 | "version": "0.4.1", 958 | "scalaVersions": ["2.11"] 959 | } 960 | ], 961 | "compileTimeOnly": false 962 | }, 963 | { 964 | "name": "Circe", 965 | "organization": "io.circe", 966 | "artifact": "circe-core", 967 | "doc": "https://circe.github.io/circe", 968 | "versions": [ 969 | { 970 | "version": "0.13.0", 971 | "scalaVersions": ["2.12"], 972 | "extraDeps": ["io.circe %%% circe-generic % 0.13.0", "io.circe %%% circe-parser % 0.13.0"] 973 | }, 974 | { 975 | "version": "0.12.3", 976 | "scalaVersions": ["2.12"], 977 | "extraDeps": ["io.circe %%% circe-generic % 0.12.3", "io.circe %%% circe-parser % 0.12.3"] 978 | }, 979 | { 980 | "version": "0.9.1", 981 | "scalaVersions": ["2.11", "2.12"], 982 | "extraDeps": ["io.circe %%% circe-generic % 0.9.1", "io.circe %%% circe-generic-extras % 0.9.1", "io.circe %%% circe-parser % 0.9.1"] 983 | }, 984 | { 985 | "version": "0.9.0-M1", 986 | "scalaVersions": ["2.11", "2.12"], 987 | "extraDeps": ["io.circe %%% circe-generic % 0.9.0-M1", "io.circe %%% circe-generic-extras % 0.9.0-M1", "io.circe %%% circe-parser % 0.9.0-M1"] 988 | }, 989 | { 990 | "version": "0.8.0", 991 | "scalaVersions": ["2.11", "2.12"], 992 | "extraDeps": ["io.circe %%% circe-generic % 0.8.0", "io.circe %%% circe-generic-extras % 0.8.0", "io.circe %%% circe-parser % 0.8.0"] 993 | }, 994 | { 995 | "version": "0.5.1", 996 | "scalaVersions": ["2.11"], 997 | "extraDeps": ["io.circe %%% circe-generic % 0.5.1", "io.circe %%% circe-parser % 0.5.1"] 998 | }, 999 | { 1000 | "version": "0.4.1", 1001 | "scalaVersions": ["2.11"], 1002 | "extraDeps": ["io.circe %%% circe-generic % 0.4.1", "io.circe %%% circe-parser % 0.4.1"] 1003 | } 1004 | ], 1005 | "compileTimeOnly": false 1006 | }, 1007 | { 1008 | "name": "Play JSON codecs", 1009 | "organization": "org.julienrf", 1010 | "artifact": "play-json-derived-codecs", 1011 | "doc": "https://github.com/julienrf/play-json-derived-codecs", 1012 | "versions": [ 1013 | { 1014 | "version": "4.0.0", 1015 | "scalaVersions": ["2.11", "2.12"], 1016 | "extraDeps": ["org.julienrf %%% play-json-derived-codecs % 4.0.0"] 1017 | } 1018 | ], 1019 | "compileTimeOnly": false 1020 | }, 1021 | { 1022 | "name": "jsoniter-scala", 1023 | "organization": "com.github.plokhotnyuk.jsoniter-scala", 1024 | "artifact": "jsoniter-scala-macros", 1025 | "doc": "https://github.com/plokhotnyuk/jsoniter-scala", 1026 | "versions": [ 1027 | { 1028 | "version": "2.2.3", 1029 | "scalaVersions": ["2.11", "2.12"], 1030 | "scalaJSVersions": ["1"] 1031 | } 1032 | ], 1033 | "compileTimeOnly": false 1034 | } 1035 | ] 1036 | }, 1037 | { 1038 | "group": "Miscellaneous", 1039 | "libraries": [ 1040 | { 1041 | "name": "Collection Strawman", 1042 | "organization": "ch.epfl.scala", 1043 | "artifact": "collection-strawman", 1044 | "doc": "scala/collection-strawman", 1045 | "versions": [ 1046 | { 1047 | "version": "0.5.0", 1048 | "scalaVersions": ["2.12"] 1049 | } 1050 | ], 1051 | "compileTimeOnly": false 1052 | }, 1053 | { 1054 | "name": "FastParse", 1055 | "organization": "com.lihaoyi", 1056 | "artifact": "fastparse", 1057 | "doc": "http://www.lihaoyi.com/fastparse/", 1058 | "versions": [ 1059 | { 1060 | "version": "2.2.4", 1061 | "scalaVersions": ["2.12"], 1062 | "scalaJSVersions": ["0.6", "1"] 1063 | }, 1064 | { 1065 | "version": "2.2.2", 1066 | "scalaVersions": ["2.12"] 1067 | }, 1068 | { 1069 | "version": "1.0.0", 1070 | "scalaVersions": ["2.11", "2.12"] 1071 | } 1072 | ], 1073 | "compileTimeOnly": false 1074 | }, 1075 | { 1076 | "name": "Accord", 1077 | "organization": "com.wix", 1078 | "artifact": "accord-core", 1079 | "doc": "http://wix.github.io/accord/", 1080 | "versions": [ 1081 | { 1082 | "version": "0.7.1", 1083 | "scalaVersions": ["2.11", "2.12"] 1084 | }, 1085 | { 1086 | "version": "0.6.1", 1087 | "scalaVersions": ["2.11", "2.12"] 1088 | }, 1089 | { 1090 | "version": "0.6", 1091 | "scalaVersions": ["2.11"] 1092 | } 1093 | ], 1094 | "compileTimeOnly": false 1095 | }, 1096 | { 1097 | "name": "Akka.Js", 1098 | "organization": "org.akka-js", 1099 | "artifact": "akkajsactor", 1100 | "doc": "akka-js/akka.js", 1101 | "versions": [ 1102 | { 1103 | "version": "2.2.6.1", 1104 | "scalaVersions": ["2.12"] 1105 | }, 1106 | { 1107 | "version": "1.2.5.14", 1108 | "scalaVersions": ["2.11", "2.12"] 1109 | }, 1110 | { 1111 | "version": "1.2.5.11", 1112 | "scalaVersions": ["2.11", "2.12"] 1113 | }, 1114 | { 1115 | "version": "1.2.5.9", 1116 | "scalaVersions": ["2.11", "2.12"] 1117 | }, 1118 | { 1119 | "version": "1.2.5.6", 1120 | "scalaVersions": ["2.11", "2.12"] 1121 | }, 1122 | { 1123 | "version": "1.2.5.2", 1124 | "scalaVersions": ["2.11", "2.12"] 1125 | }, 1126 | { 1127 | "version": "1.2.5.1", 1128 | "scalaVersions": ["2.11", "2.12"] 1129 | }, 1130 | { 1131 | "version": "0.2.4.14", 1132 | "organization": "eu.unicredit", 1133 | "scalaVersions": ["2.11", "2.12"] 1134 | }, 1135 | { 1136 | "version": "0.2.4.12", 1137 | "organization": "eu.unicredit", 1138 | "scalaVersions": ["2.11", "2.12"] 1139 | }, 1140 | { 1141 | "version": "0.2.4.11", 1142 | "organization": "eu.unicredit", 1143 | "scalaVersions": ["2.11"] 1144 | }, 1145 | { 1146 | "version": "0.2.4.10", 1147 | "organization": "eu.unicredit", 1148 | "scalaVersions": ["2.11"] 1149 | }, 1150 | { 1151 | "version": "0.2.4.9", 1152 | "organization": "eu.unicredit", 1153 | "scalaVersions": ["2.11"] 1154 | }, 1155 | { 1156 | "version": "0.2.0", 1157 | "organization": "eu.unicredit", 1158 | "scalaVersions": ["2.11"] 1159 | } 1160 | ], 1161 | "compileTimeOnly": false 1162 | }, 1163 | { 1164 | "name": "AkkaStream.Js", 1165 | "organization": "org.akka-js", 1166 | "artifact": "akkajsactorstream", 1167 | "doc": "akka-js/akka.js", 1168 | "versions": [ 1169 | { 1170 | "version": "2.2.6.1", 1171 | "scalaVersions": ["2.12"] 1172 | }, 1173 | { 1174 | "version": "1.2.5.14", 1175 | "scalaVersions": ["2.11", "2.12"] 1176 | }, 1177 | { 1178 | "version": "1.2.5.11", 1179 | "scalaVersions": ["2.11", "2.12"] 1180 | }, 1181 | { 1182 | "version": "1.2.5.9", 1183 | "scalaVersions": ["2.11", "2.12"] 1184 | }, 1185 | { 1186 | "version": "1.2.5.6", 1187 | "scalaVersions": ["2.11", "2.12"] 1188 | }, 1189 | { 1190 | "version": "1.2.5.2", 1191 | "scalaVersions": ["2.11", "2.12"] 1192 | }, 1193 | { 1194 | "version": "1.2.5.1", 1195 | "scalaVersions": ["2.11", "2.12"] 1196 | }, 1197 | { 1198 | "version": "0.2.4.14", 1199 | "organization": "eu.unicredit", 1200 | "scalaVersions": ["2.11", "2.12"] 1201 | }, 1202 | { 1203 | "version": "0.2.4.12", 1204 | "organization": "eu.unicredit", 1205 | "scalaVersions": ["2.11", "2.12"] 1206 | }, 1207 | { 1208 | "version": "0.2.4.11", 1209 | "organization": "eu.unicredit", 1210 | "scalaVersions": ["2.11"] 1211 | }, 1212 | { 1213 | "version": "0.2.4.10", 1214 | "organization": "eu.unicredit", 1215 | "scalaVersions": ["2.11"] 1216 | }, 1217 | { 1218 | "version": "0.2.4.9", 1219 | "organization": "eu.unicredit", 1220 | "scalaVersions": ["2.11"] 1221 | }, 1222 | { 1223 | "version": "0.2.0", 1224 | "organization": "eu.unicredit", 1225 | "scalaVersions": ["2.11"] 1226 | } 1227 | ], 1228 | "compileTimeOnly": false 1229 | }, 1230 | { 1231 | "name": "AkkaTyped.Js", 1232 | "organization": "org.akka-js", 1233 | "artifact": "akkajsactortyped", 1234 | "doc": "akka-js/akka.js", 1235 | "versions": [ 1236 | { 1237 | "version": "2.2.6.1", 1238 | "scalaVersions": ["2.12"] 1239 | }, 1240 | { 1241 | "version": "1.2.5.14", 1242 | "scalaVersions": ["2.11", "2.12"] 1243 | }, 1244 | { 1245 | "version": "1.2.5.11", 1246 | "scalaVersions": ["2.11", "2.12"] 1247 | }, 1248 | { 1249 | "version": "1.2.5.9", 1250 | "scalaVersions": ["2.11", "2.12"] 1251 | } 1252 | ], 1253 | "compileTimeOnly": false 1254 | }, 1255 | { 1256 | "name": "AkkaStreamTyped.Js", 1257 | "organization": "org.akka-js", 1258 | "artifact": "akkajsactorstreamtyped", 1259 | "doc": "akka-js/akka.js", 1260 | "versions": [ 1261 | { 1262 | "version": "2.2.6.1", 1263 | "scalaVersions": ["2.12"] 1264 | }, 1265 | { 1266 | "version": "1.2.5.14", 1267 | "scalaVersions": ["2.11", "2.12"] 1268 | } 1269 | ], 1270 | "compileTimeOnly": false 1271 | }, 1272 | { 1273 | "name": "Java8 Time", 1274 | "organization": "org.scala-js", 1275 | "artifact": "scalajs-java-time", 1276 | "doc": "scala-js/scala-js-java-time", 1277 | "versions": [ 1278 | { 1279 | "version": "0.2.6", 1280 | "scalaVersions": ["2.11", "2.12"], 1281 | "scalaJSVersions": ["0.6", "1"] 1282 | }, 1283 | { 1284 | "version": "0.2.3", 1285 | "scalaVersions": ["2.11", "2.12"] 1286 | }, 1287 | { 1288 | "version": "0.2.2", 1289 | "scalaVersions": ["2.11", "2.12"] 1290 | }, 1291 | { 1292 | "version": "0.2.1", 1293 | "scalaVersions": ["2.11", "2.12"] 1294 | }, 1295 | { 1296 | "version": "0.1.0", 1297 | "scalaVersions": ["2.11"] 1298 | } 1299 | ], 1300 | "compileTimeOnly": false 1301 | }, 1302 | { 1303 | "name": "Quill", 1304 | "organization": "io.getquill", 1305 | "artifact": "quill-sql", 1306 | "doc": "http://getquill.io/", 1307 | "versions": [ 1308 | { 1309 | "version": "3.5.0", 1310 | "scalaVersions": ["2.12"] 1311 | }, 1312 | { 1313 | "version": "2.3.1", 1314 | "scalaVersions": ["2.11", "2.12"] 1315 | }, 1316 | { 1317 | "version": "2.0.0", 1318 | "scalaVersions": ["2.11", "2.12"] 1319 | }, 1320 | { 1321 | "version": "1.4.0", 1322 | "scalaVersions": ["2.11", "2.12"] 1323 | }, 1324 | { 1325 | "version": "1.3.0", 1326 | "scalaVersions": ["2.11", "2.12"] 1327 | }, 1328 | { 1329 | "version": "1.2.1", 1330 | "scalaVersions": ["2.11", "2.12"] 1331 | }, 1332 | { 1333 | "version": "1.1.0", 1334 | "scalaVersions": ["2.11"] 1335 | }, 1336 | { 1337 | "version": "1.0.1", 1338 | "scalaVersions": ["2.11"] 1339 | }, 1340 | { 1341 | "version": "1.0.0", 1342 | "scalaVersions": ["2.11"] 1343 | }, 1344 | { 1345 | "version": "0.10.0", 1346 | "scalaVersions": ["2.11"] 1347 | } 1348 | ], 1349 | "compileTimeOnly": false 1350 | }, 1351 | { 1352 | "name": "Scalameta", 1353 | "organization": "org.scalameta", 1354 | "artifact": "scalameta", 1355 | "doc": "http://scalameta.org", 1356 | "versions": [ 1357 | { 1358 | "version": "2.1.7", 1359 | "scalaVersions": ["2.12"] 1360 | }, 1361 | { 1362 | "version": "4.0.0", 1363 | "scalaVersions": ["2.12"] 1364 | } 1365 | ], 1366 | "compileTimeOnly": false 1367 | }, 1368 | { 1369 | "name": "Scalafmt", 1370 | "organization": "com.geirsson", 1371 | "artifact": "scalafmt-core", 1372 | "doc": "http://scalameta.org/scalafmt/", 1373 | "versions": [ 1374 | { 1375 | "version": "1.4.0", 1376 | "scalaVersions": ["2.12"] 1377 | }, 1378 | { 1379 | "version": "1.5.1", 1380 | "scalaVersions": ["2.12"] 1381 | } 1382 | ], 1383 | "compileTimeOnly": false 1384 | }, 1385 | { 1386 | "name": "Rapture", 1387 | "organization": "com.propensive", 1388 | "artifact": "rapture", 1389 | "doc": "http://rapture.io/", 1390 | "versions": [ 1391 | { 1392 | "version": "2.0.0-M7", 1393 | "scalaVersions": ["2.11"] 1394 | } 1395 | ], 1396 | "compileTimeOnly": false 1397 | }, 1398 | { 1399 | "name": "Contextual", 1400 | "organization": "com.propensive", 1401 | "artifact": "contextual", 1402 | "doc": "http://co.ntextu.al/", 1403 | "versions": [ 1404 | { 1405 | "version": "1.0.1", 1406 | "scalaVersions": ["2.11", "2.12"] 1407 | } 1408 | ], 1409 | "compileTimeOnly": false 1410 | }, 1411 | { 1412 | "name": "sttp", 1413 | "organization": "com.softwaremill.sttp.client", 1414 | "artifact": "core", 1415 | "doc": "https://sttp.softwaremill.com/", 1416 | "versions": [ 1417 | { 1418 | "version": "2.0.4", 1419 | "scalaVersions": ["2.12"], 1420 | "extraDeps": [ 1421 | "com.softwaremill.sttp.client %%% circe % 2.0.4", 1422 | "com.softwaremill.sttp.client %%% json-common % 2.0.4", 1423 | "io.circe %%% circe-core % 0.13.0", 1424 | "io.circe %%% circe-generic % 0.13.0", 1425 | "io.circe %%% circe-parser % 0.13.0" 1426 | ] 1427 | }, 1428 | { 1429 | "version": "1.5.2", 1430 | "organization": "com.softwaremill.sttp", 1431 | "scalaVersions": ["2.11", "2.12"] 1432 | } 1433 | ], 1434 | "compileTimeOnly": false 1435 | }, 1436 | { 1437 | "name": "RosHTTP", 1438 | "organization": "fr.hmil", 1439 | "artifact": "roshttp", 1440 | "doc": "https://github.com/hmil/RosHTTP/blob/master/README.md", 1441 | "versions": [ 1442 | { 1443 | "version": "2.2.3", 1444 | "scalaVersions": ["2.11", "2.12"] 1445 | } 1446 | ], 1447 | "compileTimeOnly": false 1448 | }, 1449 | { 1450 | "name": "RTree2D", 1451 | "organization": "com.github.plokhotnyuk.rtree2d", 1452 | "artifact": "rtree2d-core", 1453 | "doc": "https://github.com/plokhotnyuk/rtree2d", 1454 | "versions": [ 1455 | { 1456 | "version": "0.10.0", 1457 | "scalaVersions": ["2.11", "2.12"], 1458 | "scalaJSVersions": ["1"] 1459 | } 1460 | ], 1461 | "compileTimeOnly": false 1462 | } 1463 | ] 1464 | } 1465 | ] 1466 | -------------------------------------------------------------------------------- /logging/elasticsearch/Dockerfile: -------------------------------------------------------------------------------- 1 | # https://github.com/elastic/elasticsearch-docker 2 | FROM docker.elastic.co/elasticsearch/elasticsearch:5.4.0 3 | 4 | # Add your elasticsearch plugins setup here 5 | # Example: RUN elasticsearch-plugin install analysis-icu 6 | -------------------------------------------------------------------------------- /logging/elasticsearch/config/elasticsearch.yml: -------------------------------------------------------------------------------- 1 | --- 2 | ## Default Elasticsearch configuration from elasticsearch-docker. 3 | ## from https://github.com/elastic/elasticsearch-docker/blob/master/build/elasticsearch/elasticsearch.yml 4 | # 5 | cluster.name: "docker-cluster" 6 | network.host: 0.0.0.0 7 | 8 | # minimum_master_nodes need to be explicitly set when bound on a public IP 9 | # set to 1 to allow single node clusters 10 | # Details: https://github.com/elastic/elasticsearch/pull/17288 11 | discovery.zen.minimum_master_nodes: 1 12 | 13 | ## Use single node discovery in order to disable production mode and avoid bootstrap checks 14 | ## see https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html 15 | # 16 | discovery.type: single-node 17 | 18 | ## Disable X-Pack 19 | ## see https://www.elastic.co/guide/en/x-pack/current/xpack-settings.html 20 | ## https://www.elastic.co/guide/en/x-pack/current/installing-xpack.html#xpack-enabling 21 | # 22 | xpack.security.enabled: false 23 | xpack.monitoring.enabled: false 24 | xpack.ml.enabled: false 25 | xpack.graph.enabled: false 26 | xpack.watcher.enabled: false 27 | -------------------------------------------------------------------------------- /logging/kibana/Dockerfile: -------------------------------------------------------------------------------- 1 | # https://github.com/elastic/kibana-docker 2 | FROM docker.elastic.co/kibana/kibana:5.4.0 3 | 4 | # Add your kibana plugins setup here 5 | # Example: RUN kibana-plugin install 6 | -------------------------------------------------------------------------------- /logging/kibana/config/kibana.yml: -------------------------------------------------------------------------------- 1 | --- 2 | ## Default Kibana configuration from kibana-docker. 3 | ## from https://github.com/elastic/kibana-docker/blob/master/build/kibana/config/kibana.yml 4 | # 5 | server.name: kibana 6 | server.host: "0" 7 | elasticsearch.url: http://elasticsearch:9200 8 | 9 | ## Disable X-Pack 10 | ## see https://www.elastic.co/guide/en/x-pack/current/xpack-settings.html 11 | ## https://www.elastic.co/guide/en/x-pack/current/installing-xpack.html#xpack-enabling 12 | # 13 | xpack.security.enabled: false 14 | xpack.monitoring.enabled: false 15 | xpack.ml.enabled: false 16 | xpack.graph.enabled: false 17 | xpack.reporting.enabled: false 18 | -------------------------------------------------------------------------------- /logging/logstash/Dockerfile: -------------------------------------------------------------------------------- 1 | # https://github.com/elastic/logstash-docker 2 | FROM docker.elastic.co/logstash/logstash:5.4.0 3 | 4 | # Add your logstash plugins setup here 5 | # Example: RUN logstash-plugin install logstash-filter-json 6 | -------------------------------------------------------------------------------- /logging/logstash/config/logstash.yml: -------------------------------------------------------------------------------- 1 | --- 2 | ## Default Logstash configuration from logstash-docker. 3 | ## from https://github.com/elastic/logstash-docker/blob/master/build/logstash/config/logstash.yml 4 | # 5 | http.host: "0.0.0.0" 6 | path.config: /usr/share/logstash/pipeline 7 | 8 | ## Disable X-Pack 9 | ## see https://www.elastic.co/guide/en/x-pack/current/xpack-settings.html 10 | ## https://www.elastic.co/guide/en/x-pack/current/installing-xpack.html#xpack-enabling 11 | # 12 | xpack.monitoring.enabled: false -------------------------------------------------------------------------------- /logging/logstash/pipeline/logstash.conf: -------------------------------------------------------------------------------- 1 | input { 2 | ## Use Gelf UDP input from Docker containers 3 | gelf { 4 | port => 5000 5 | codec => "json" 6 | } 7 | } 8 | 9 | ## Add your filters / logstash plugins configuration here 10 | filter{ 11 | json { 12 | source => "message" 13 | } 14 | mutate { 15 | ## Some log messages use numeric level, so we need to force them all to string 16 | convert => { "level" => "string" } 17 | } 18 | } 19 | 20 | 21 | output { 22 | elasticsearch { 23 | hosts => "elasticsearch:9200" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /metrics/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM kamon/grafana_graphite 2 | 3 | # Create symbolic links to /data dir for all data directories 4 | RUN ln -sf /data/metrics/whisper /opt/graphite/storage/whisper &&\ 5 | ln -sf /data/metrics/grafana /opt/grafana/data &&\ 6 | ln -sf /data/metrics/graphite /opt/graphite/storage/log 7 | 8 | # Make sure the data directories exist before starting metrics tools 9 | CMD mkdir -p /data/metrics/whisper /data/metrics/grafana /data/metrics/graphite/webapp && /usr/bin/supervisord 10 | -------------------------------------------------------------------------------- /samples/scalajs-react/1.1/todo.scala: -------------------------------------------------------------------------------- 1 | import fiddle.Fiddle, Fiddle.println 2 | import scalajs.js 3 | 4 | @js.annotation.JSExportTopLevel("ScalaFiddle") 5 | object ScalaFiddle { 6 | // $FiddleStart 7 | import japgolly.scalajs.react._, vdom.html_<^._ 8 | 9 | val TodoList = ScalaFnComponent[List[String]]{ props => 10 | def createItem(itemText: String) = <.li(itemText) 11 | <.ul(props map createItem: _*) 12 | } 13 | 14 | case class State(items: List[String], text: String) 15 | 16 | class Backend($: BackendScope[Unit, State]) { 17 | def onChange(e: ReactEventFromInput) = { 18 | val newValue = e.target.value 19 | $.modState(_.copy(text = newValue)) 20 | } 21 | 22 | def handleSubmit(e: ReactEventFromInput) = 23 | e.preventDefaultCB >> 24 | $.modState(s => State(s.items :+ s.text, "")) 25 | 26 | def render(state: State) = 27 | <.div( 28 | <.h3("TODO"), 29 | TodoList(state.items), 30 | <.form(^.onSubmit ==> handleSubmit, 31 | <.input(^.onChange ==> onChange, ^.value := state.text), 32 | <.button("Add #", state.items.length + 1) 33 | ) 34 | ) 35 | } 36 | 37 | val TodoApp = ScalaComponent.builder[Unit]("TodoApp") 38 | .initialState(State(Nil, "")) 39 | .renderBackend[Backend] 40 | .build 41 | 42 | TodoApp().renderIntoDOM(Fiddle.panel) 43 | // $FiddleEnd 44 | } -------------------------------------------------------------------------------- /samples/scalajs-react/1.2/todo.scala: -------------------------------------------------------------------------------- 1 | import fiddle.Fiddle, Fiddle.println 2 | import scalajs.js 3 | 4 | @js.annotation.JSExportTopLevel("ScalaFiddle") 5 | object ScalaFiddle { 6 | // $FiddleStart 7 | import japgolly.scalajs.react._, vdom.html_<^._ 8 | 9 | val TodoList = ScalaFnComponent[List[String]]{ props => 10 | def createItem(itemText: String) = <.li(itemText) 11 | <.ul(props map createItem: _*) 12 | } 13 | 14 | case class State(items: List[String], text: String) 15 | 16 | class Backend($: BackendScope[Unit, State]) { 17 | def onChange(e: ReactEventFromInput) = { 18 | val newValue = e.target.value 19 | $.modState(_.copy(text = newValue)) 20 | } 21 | 22 | def handleSubmit(e: ReactEventFromInput) = 23 | e.preventDefaultCB >> 24 | $.modState(s => State(s.items :+ s.text, "")) 25 | 26 | def render(state: State) = 27 | <.div( 28 | <.h3("TODO"), 29 | TodoList(state.items), 30 | <.form(^.onSubmit ==> handleSubmit, 31 | <.input(^.onChange ==> onChange, ^.value := state.text), 32 | <.button("Add #", state.items.length + 1) 33 | ) 34 | ) 35 | } 36 | 37 | val TodoApp = ScalaComponent.builder[Unit]("TodoApp") 38 | .initialState(State(Nil, "")) 39 | .renderBackend[Backend] 40 | .build 41 | 42 | TodoApp().renderIntoDOM(Fiddle.panel) 43 | // $FiddleEnd 44 | } -------------------------------------------------------------------------------- /samples/slinky/0.4.3/todo.scala: -------------------------------------------------------------------------------- 1 | import fiddle.Fiddle, Fiddle.println 2 | import scalajs.js 3 | 4 | @js.annotation.JSExportTopLevel("ScalaFiddle") 5 | object ScalaFiddle { 6 | // $FiddleStart 7 | import slinky.core._ 8 | 9 | import slinky.web.html._ 10 | import slinky.web.ReactDOM 11 | 12 | import scala.scalajs.js 13 | import scala.scalajs.js.annotation.ScalaJSDefined 14 | 15 | import scala.scalajs.js.Date 16 | import org.scalajs.dom.raw.{Event, HTMLInputElement} 17 | 18 | case class TodoItem(text: String, id: Long) 19 | 20 | object TodoList extends StatelessComponentWrapper { 21 | case class Props(items: Seq[TodoItem]) 22 | 23 | @ScalaJSDefined 24 | class Def(jsProps: js.Object) extends Definition(jsProps) { 25 | override def render() = { 26 | ul(props.items.map { item => 27 | li(key := item.id.toString)(item.text) 28 | }) 29 | } 30 | } 31 | } 32 | 33 | object TodoApp extends ComponentWrapper { 34 | type Props = Unit 35 | case class State(items: Seq[TodoItem], text: String) 36 | 37 | @ScalaJSDefined 38 | class Def(jsProps: js.Object) extends Definition(jsProps) { 39 | override def initialState = State(Seq.empty, "") 40 | 41 | def handleChange(e: Event): Unit = { 42 | val eventValue = e.target.asInstanceOf[HTMLInputElement].value 43 | setState(_.copy(text = eventValue)) 44 | } 45 | 46 | def handleSubmit(e: Event): Unit = { 47 | e.preventDefault() 48 | 49 | if (state.text.nonEmpty) { 50 | val newItem = TodoItem( 51 | text = state.text, 52 | id = Date.now().toLong 53 | ) 54 | 55 | setState(prevState => { 56 | State( 57 | items = prevState.items :+ newItem, 58 | text = "" 59 | ) 60 | }) 61 | } 62 | } 63 | 64 | override def render() = { 65 | div( 66 | h3("TODO"), 67 | TodoList(TodoList.Props(items = state.items)), 68 | form(onSubmit := handleSubmit _)( 69 | input(onChange := handleChange _, value := state.text), 70 | button(s"Add #${state.items.size + 1}") 71 | ) 72 | ) 73 | } 74 | } 75 | } 76 | 77 | ReactDOM.render(TodoApp(), Fiddle.panel) 78 | // $FiddleEnd 79 | } 80 | --------------------------------------------------------------------------------